如何使用dockerfile构建docker镜像?

如何使用dockerfile构建docker镜像?
最新回答
不眠之夜

2026-10-20 12:52:39

首先,了解一下构建 Docker 镜像的基本理论知识,这对后续的实践操作理解很有帮助。使用 Dockerfile 来自动构建镜像是 Docker 的强大功能之一。Dockerfile 是一个文本文件,其中包含了一系列创建镜像的命令,每一行只能执行一条命令。文件由四部分组成:忽略大小写的 Dockerfile 指令、# 作为注释、每行仅支持一条指令、指令可带多个参数。主要指令包括:

1. FROM:指定基础镜像,用于在现有镜像上构建新镜像。通常需要指定远程或本地仓库。Dockerfile 文件的第一行必须是 FROM 指令。如果需要创建多个镜像,可以使用多个 FROM 指令。
2. MAINTAINER:用于指定镜像的创建者信息。
3. RUN:执行所有基础镜像支持的命令。可以使用多条 RUN 指令,换行使用 \。
4. CMD:指定容器启动时的操作。可以是命令或脚本,但只执行一次。如果多个 CMD,只会执行最后一个。
5. EXPOSE:指定容器的端口映射到主机,通过 p 参数在运行容器时指定 EXPOSE 设置的端口。可以设置多个端口号,对应地使用 p 参数。使用 docker port + 端口号和容器 ID 可查看映射情况。
6. ENV:设置镜像中的环境变量,RUN 命令可以使用这些变量。通过 docker inspect 可查看环境变量,使用 docker run --env key=value 来设置或修改环境变量。
7. ADD/COPY:复制文件或目录到容器,ADD 的源可以是文件、目录或 URL,而 COPY 的源默认为 Dockerfile 所在目录。复制到容器中的文件和目录权限为 0755,uid 和 gid 为 0。
8. ENTRYPOINT:指定容器启动后的执行命令,多行只执行最后一行,不可被 docker run 参数覆盖。
9. VOLUME:创建挂载点,用于本地主机或其它容器挂载,通常用于存放数据。与 docker run -v 功能相似。
10. USER:指定容器运行时使用的用户或 UID,后续 RUN、CMD、ENTRYPOINT 指令会使用此用户运行命令。
11. WORKDIR:指定 RUN、CMD、ENTRYPOINT 指令执行命令的目录。可以使用多个 WORKDIR 指令,后续参数为相对路径时,会基于之前的命令指定的路径。最终路径为组合后的目录。路径也可以是环境变量。
12. ONBUILD:在创建的镜像作为其它新创建镜像的基础时执行的操作指令。如果其它镜像以此镜像为基础,会先执行 ONBUILD 指令。

通过 Dockerfile 构建镜像的示例:构建一个 Tomcat 镜像。请确保已安装 Docker 环境,构建过程包括通过构建的镜像启动容器并访问容器。浏览器输入 server-ip:8080,可查看结果。有关日常使用技巧,可参阅“这 4 个超实用的 Docker 镜像构建技巧!”文章。系统运维学习资源包括《运维工程师打怪升级进阶之路 4.0》专栏,涵盖 MySQL、PostgreSQL、MongoDB、ElasticSearch、Hadoop、Redis、Kubernetes、Docker、DevOps、Kafka、RabbitMQ、Zookeeper、监控平台、应用与服务、集群管理、Nginx、Git、工具、OpenStack 等主题。