2026.2.3 Dockfile创建镜像

1、什么是Docker file

Dockerfile 是一个文本文件,包含了一系列的指令(如 FROMRUNCOPY 等),用于自动化构建 Docker 镜像。它描述了如何从基础镜像开始,逐步添加文件、安装软件、设置环境,最终生成一个可运行的镜像。通过 Dockerfile,可以将应用及其运行环境"代码化",实现镜像的可重复构建和版本控制。

2、操作指令与配置指令

操作指令

在构建镜像过程中执行具体操作,如复制文件、运行命令

ADD

增强版COPY,支持从URL下载文件或自动解压tar包

CMD

提供容器启动时的默认命令(可以被docker run 后的命令覆盖)

COPY

将本地文件或目录复制到镜像的文件系统中

ENV

设置环境变量,在构建和容器运行时均生效

EXPOSE

声明容器运行时监听的端口,仅起文档作用,实际发布需-p

ENTRYPOINT

配置容器启动的主命令,与CMD配合使用可实现固定命令+可变参数

FROM

指定基础镜像,必须是 Dockerfile 的第一条有效指令(除 ARG 外)

WORKDIR

设置后续指令的工作目录(若目录不存在会自动创建)

VOLUME

创建一个挂载点,用于持久化数据或共享目录

配置指令

设置镜像的元数据或运行时行为,如环境变量、端口声明

ARG

定义构建镜像时的参数,定义一个构建时的变量,可以在 docker build 命令中通过 --build-arg 参数动态赋值。该变量仅在构建过程中有效,不会保留在最终镜像中。

HEALTHCHECK

指定容器健康检查的命令,告诉 Docker 如何检测容器是否正常工作(如服务是否响应)。如果健康检查失败,容器状态会变为 unhealthy,便于编排工具(如 Docker Swarm、Kubernetes)自动处理。

LABEL

为镜像添加元数据,以键值对形式保存。可用于记录版本、作者、项目信息等,通过 docker inspect 查看。

ONBUILD

为镜像设置一个"触发器"指令,当该镜像被用作其他 Dockerfile 的基础镜像(FROM)时,触发器指令会在构建子镜像时自动执行。常用于创建基础镜像,让子镜像继承某些构建步骤。

STOPSIGNAL

设置停止容器时发送给主进程的系统调用信号(默认是 SIGTERM)。某些应用可能需要自定义信号(如 SIGQUIT)才能优雅退出。

USER

指定运行后续指令(如 RUNCMDENTRYPOINT)时所使用的用户名或 UID(以及可选的用户组)。建议在容器中切换为非 root 用户运行,以增强安全性。

练习

使用dockerfile构建名为mysql-5.7版本的镜像,构建的镜像名称为hzx/mysql:5.7,并且可以从外部连接到数据库服务

步骤

①下载指定镜像,并检查镜像库

复制代码
docker pull mysql:5.7
docker images

②编写Docker file 脚本执行自动化

③构建镜像

④启动容器并映射端口

yourpassword可以改成你自己设置的密码,必须设置密码,否则容器会无法启动

复制代码
docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=yourpassword hzx/mysql:v5.7

⑤使用NaviCat测试远程连接

输入主机地址,端口,登录的用户名,与上一步中设置的密码

出现以下界面表示远程连接成功

相关推荐
charlie11451419117 分钟前
2026年正点原子开发板移植方案——从0开始的Rootfs之路(3)inittab 与 init 系统:Linux 启动的“第一号进程“全解析
linux·驱动开发·学习·嵌入式开发·嵌入式linux
手握风云-28 分钟前
基于 Java 的网页聊天室(三)
服务器·前端·数据库
xlp666hub36 分钟前
深度剖析 Linux Input 子系统(3):从零写一个 Input 驱动,最详细手把手(附完整代码)
linux·面试
贺小涛39 分钟前
jenkins
运维·jenkins
开开心心_Every1 小时前
限时免费加密、隐藏、锁定文件文件夹好工具
运维·服务器·人工智能·edge·pdf·逻辑回归·深度优先
RisunJan1 小时前
Linux命令-modprobe(自动处理可载入模块)
linux·运维
野犬寒鸦1 小时前
Redis复习记录day1
服务器·开发语言·数据库·redis·缓存
龙俊俊1 小时前
服务器模型部署与加载
服务器·人工智能·深度学习
何朴尧2 小时前
OpenClaw Linux 完整安装指南
linux