2026.2.3 Dockfile创建镜像

1、什么是Docker file

Dockerfile 是一个文本文件,包含了一系列的指令(如 FROM、RUN、COPY 等),用于自动化构建 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

指定运行后续指令(如 RUN、CMD、ENTRYPOINT)时所使用的用户名或 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测试远程连接

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

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

相关推荐
人工智能培训12 分钟前
具身智能环境交互与学习范式原理
大数据·linux·人工智能·学习·算法·机器学习
Sayai30 分钟前
Java 进程 Unable to create new native thread 排查实战:Linux 线程数五层限制与 JVM -Xss 调优
java·linux·运维·jvm·性能优化
CS_Zero32 分钟前
解决模型开发板ping不通模型终端设备问题
linux·网络
wuminyu34 分钟前
Continuation::freeze与thaw的x86_64汇编Stack Chunk拆解源码分析
java·linux·c语言·汇编·jvm·c++
修船大队长1 小时前
启动阶段 KL15 未接通时触发报文超时监控
运维·服务器·网络
xiaoye-duck1 小时前
《C++ 项目:手写大模型接入 SDK》项目背景、目标及名词解释
服务器·网络·c++·语言模型
程序员-Benothing1 小时前
Linux网络排错命令:ping、traceroute、mtr、dig、nslookup
linux·运维·网络
RD_daoyi1 小时前
外贸独立站从0到1:平台选择 + 建站流程 + 新手避坑
大数据·服务器·网络·人工智能·搜索引擎·职场和发展
AbandonForce1 小时前
Linux 网络:序列化与反序列化
linux·运维·网络