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测试远程连接

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

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

相关推荐
猫头虎1 小时前
OpenClaw相关的开源AI项目汇总大全:本文涵盖近期所有OpenClaw相关的GitHub高星star热门项目
运维·人工智能·macos·docker·容器·开源·github
筵陌1 小时前
Linux网络传输层协议TCP
linux·网络·tcp/ip
HIT_Weston2 小时前
132、【Ubuntu】【Hugo】搜索功能异常(问题解决)(二)
linux·运维·ubuntu
未来之窗软件服务2 小时前
服务器运维(三十八)日服务器php日志分析工具—东方仙盟
运维·服务器·php·服务器运维·仙盟创梦ide·东方仙盟
a1117762 小时前
Live2D 虚拟主播软件(开源Python)
java·linux·运维
jy258209560002 小时前
Linux系统离线部署MySQL详细教程(带每步骤图文教程)
linux·mysql·adb
g***27992 小时前
IPV6公网暴露下的OPENWRT防火墙安全设置(只允许访问局域网中指定服务器指定端口其余拒绝)
服务器·安全·php
l1t2 小时前
在debian 13.1容器中安装使用redrock postgresql
运维·postgresql·debian
乾元2 小时前
提示词注入:针对 LLM 的 SQL 注入式攻击分析
运维·人工智能·安全·网络安全·架构·系统架构·自动化