Dockerfile 文件结构、docker镜像构建过程详细介绍

简介: 本文是博主学习docker 镜像制作的记录,希望对大家有所帮助

Dockerfile 基础介绍

Dockerfile是构建镜像的指令文件,由一组指令组成,文件中每条指令对应linux中一条命令,在执行构建Docker镜像时,将读取Dockerfile中的指令,根据指令来操作生成指定Docker镜像。

Dockerfile文件的编写需要准守一定的规则,Dockerfile的基础文件规则如下:

  1. 每条保留字指令都必须是大写字母,并且后面要跟随至少一个参数
  2. 指令按照从上到下,顺序执行
  3. 开头的表示注释

  4. 每条指令都会创建一个新的镜像层,并对镜像进行提交

执行Dockerfile的基本流程

  1. docker从基础镜像运行一个容器
  2. 执行一条指令并对容器作出修改
  3. 执行类似 docker commit 的操作,提交一个新的镜像层
  4. docker在基于刚提交的镜像再运行一个新容器
  5. 执行dockerfile中的下一条指令直到所有指令都执行完成

Dockerfile的指令结构

FROM 镜像名 : 指定新的镜像所基于的基础镜像
MAINTAINER 名字 : 说明新镜像的维护人,留下作者名和邮箱标记
RUN 命令 : 容器构建时需要运行的命令。在所基于的基础镜像上执行命令,并提交到新的镜像中
EXPOSE 端口号 : 指定新镜像加载到Docker时要对外暴露的端口
WORKDIR 路径名 : 指定在容器创建后,终端默认登陆后进入的工作目录。为后续的RUN 、CMD、ENTRYPOINT 指定工作目录
ENV 环境变量 变量值 : 设置一个环境变量的值,可以在后续RUN指令使用
ADD 源文件/目录 目标文件/目录 : 将文件或目录复制到镜像目标文件中,并且会自动处理URL和解压tar压缩包。文件和Dockerfile位于同一目录
COPY 源文件/目录 目标文件/目录 : 与ADD相似,将文件或目录复制到镜像目标文件中。源文件和Dockerfile位于同一目录
VOLUME [“目录”] : 在容器中挂载一个数据卷,用于数据保存和持久化工作
CMD [“要运行的程序”,“参数1”,“参数2”] : 指定启动容器时要运行的命令或脚本。可以有多个CMD指令,但只有最后一个生效。CMD会被docker run指令后的参数替换
ENTRYPOINT [“要运行的程序”,“参数1”,“参数2”] : 和CMD一样,指定启动容器时要运行的命令或脚本。ENTRYPOINT不会被docker run指令后的参数替换,而是在其后追加参数
ONBUILD 命令 : 指定所生成的镜像作为一个基础镜像时所要运行的命令。
USER 用户名 /UID : 指定运行容器时的用户
Dockerfile保留字

目录
相关文章
|
9天前
|
负载均衡 网络协议 开发者
掌握 Docker 网络:构建复杂的容器通信
在 Docker 容器化环境中,容器间的通信至关重要。本文详细介绍了 Docker 网络的基本概念和类型,包括桥接网络、宿主网络、覆盖网络和 Macvlan 网络等,并提供了创建、管理和配置自定义网络的实用命令。通过掌握这些知识,开发者可以构建更健壮和灵活的容器化应用,提高应用的可扩展性和安全性。
|
26天前
|
应用服务中间件 Linux nginx
Docker镜像-手动制作yum版nginx镜像
这篇文章介绍了如何手动制作一个基于CentOS 7.6的Docker镜像,其中包括下载指定版本的CentOS镜像,创建容器,配置阿里云软件源,安装并配置nginx,自定义nginx日志格式和web页面,最后提交镜像并基于该镜像启动新容器的详细步骤。
94 21
Docker镜像-手动制作yum版nginx镜像
|
2天前
|
jenkins 持续交付 Docker
docker之自定义制作镜像(python程序)
docker之自定义制作镜像(python程序)
|
26天前
|
应用服务中间件 nginx Docker
Docker镜像-基于DockerFile制作编译版nginx镜像
这篇文章介绍了如何基于Dockerfile制作一个编译版的nginx镜像,并提供了详细的步骤和命令。
139 17
Docker镜像-基于DockerFile制作编译版nginx镜像
|
26天前
|
应用服务中间件 Linux nginx
Docker镜像-基于DockerFile制作yum版nginx镜像
本文介绍了如何使用Dockerfile制作一个基于CentOS 7.6.1810的yum版nginx镜像,并提供了详细的步骤和命令。
72 20
|
13天前
|
Devops jenkins 持续交付
DevOps实践:构建和部署一个Docker化的应用
【9月更文挑战第14天】在当今快节奏的软件开发领域,DevOps已经成为提升效率、加速交付的关键。本文将引导你理解DevOps的核心概念,并通过一个实际的示例—构建和部署一个Docker化的应用—来深入探讨其实践方法。我们将从简单的应用出发,逐步实现Docker容器化,并最终通过CI/CD流水线自动化部署过程。这不仅是对DevOps流程的一次实操演练,也是对现代软件开发理念的一次深刻体验。
|
15天前
|
Kubernetes Docker 微服务
构建高效的微服务架构:基于Docker和Kubernetes的最佳实践
在现代软件开发中,微服务架构因其灵活性和可扩展性而受到广泛青睐。本文探讨了如何利用Docker和Kubernetes来构建高效的微服务架构。我们将深入分析Docker容器的优势、Kubernetes的编排能力,以及它们如何结合实现高可用性、自动扩展和持续部署。通过具体的最佳实践和实际案例,读者将能够理解如何优化微服务的管理和部署过程,从而提高开发效率和系统稳定性。
|
25天前
|
Docker 容器
Docker Hub镜像公共仓库使用
这篇文章介绍了如何使用Docker Hub公共仓库进行镜像的创建、上传、下载和管理。
414 8
|
1天前
|
Docker 容器
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思
|
1天前
|
Docker Windows 容器
7-12|在window上 运行docker-compose文件
7-12|在window上 运行docker-compose文件