【Docker】Docker 实践(三):使用 Dockerfile 文件构建镜像

Docker 实践(三):使用 Dockerfile 文件构建镜像

  • [1.使用 Dockerfile 文件构建镜像](#1.使用 Dockerfile 文件构建镜像)
  • [2.Dockerfile 文件详解](#2.Dockerfile 文件详解)

1.使用 Dockerfile 文件构建镜像

Dockerfile 是一个文本文件,其中包含了一条条的指令,每一条指令都用于构建镜像中的一层。

Dockerfile 文件可以使用 docker build 命令进行编译。在编译过程中,每一条指令的内容描述了该层应如何进行构建。当我们需要指定自己额外的需求时,只需在 Dockerfile 文件的基础上添加或者修改指令,重新生成新的镜像即可。

下面通过一个简单的示例来演示如何使用 Dockerfile 文件。在这个示例中,将基于 Nginx 的镜像来构建一个新的镜像,并在该镜像中部署一个简单的 Web 网页。

  • 创建一个 Dockerfile 文件。在该文件中输入以下命令。
bash 复制代码
FROM nginx
RUN echo '<h1>This is a Demo HTML</h1>' > /usr/share/nginx/html/index.html
  • 在 Dockerfile 文件所在目录下执行 docker build 命令构建镜像。
bash 复制代码
docker build -t mynginx .

docker build 命令会在当前目录下寻找名为 Dockerfile 的文件,然后对该文件进行编译生成镜像。如果文件名不是 Dockerfile,则可以在使用 docker build 命令加上 -f 参数指定具体的文件名称。

  • 查看新生成的镜像。
  • 使用新生成的镜像创建容器。
bash 复制代码
docker run -d -p 7788:80 mynginx
  • 使用浏览器访问宿主机的 7788 端口,界面如下所示。

2.Dockerfile 文件详解

下表描述了一个完整的 Dockerfile 文件的组成部分。

组成部分 说明
基础镜像信息 使用 FROM 关键字指定基础镜像信息,该命令必须是 Dockerfile 文件的第 1 条指令
维护者信息 使用 MAINTAINER 关键字指定,通常可以使用 Dockerfile 文件创建者的姓名或者电子邮件作为维护者的信息
镜像操作指令 每执行一条镜像操作时令,将在镜像中添加新的一层。可以根据需要使用一条或者多条镜像操作指令。常见的镜像操作指令有:RUNCOPYADDEXPOSEWORKDIRONBUILDUSERVOLUME
容器启动或执行指令 用于指定在启动容器时需要执行的命令。通过关键字 CMDENTERPOINT 指定

docker build 命令在使用 Dockerfile 文件生成镜像时,会通过 Docker 守护进程执行 Dockerfile 文件中的每一条指令,并在每一步执行完成后生成一个镜像。当所有的指令执行完成后,会输出最终镜像的 ID。

当镜像最终生成后,Docker 守护进程会自动清理 Docker 的上下文环境,并自动重用已生成的中间镜像,以加快构建的速度。下图的方框部分表明,在构建过程中使用到了 Dockerfile 文件的缓存机制。

相关推荐
Zl1597531597533 小时前
k8s基础环境部署
云原生·容器·kubernetes
陌殇殇殇5 小时前
使用GitLab CI构建持续集成案例
运维·ci/cd·云原生·容器·kubernetes·gitlab
吕玉生5 小时前
基于GitLab 的持续集成环境
ci/cd·gitlab
技术钱5 小时前
docker简介
运维·docker·容器
roman_日积跬步-终至千里5 小时前
【docker】docker常见命令
运维·docker·容器
tangdou3690986559 小时前
Docker系列-超级详细教你Linux安装并使用docker compose,如何使用docker-compose安装sqlserver
docker·容器·sql server
tangdou3690986559 小时前
手把手非常详细图文并茂教你 Docker 部署 SQL Server
docker·容器·sql server
福大大架构师每日一题20 小时前
20.1 分析pull模型在k8s中的应用,对比push模型
云原生·容器·kubernetes
飘逸高铁侠1 天前
docker export/import 和 docker save/load 的区别
docker·容器·eureka
大宇进阶之路1 天前
docker运行arm64架构的镜像、不同平台镜像构建
docker·微服务·架构