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

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

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

相关推荐
QC班长2 小时前
Maven公司私库配置踩坑点
java·服务器·maven·intellij-idea
Elastic 中国社区官方博客2 小时前
为 Elastic Cloud Serverless 和 Elasticsearch 引入统一的 API 密钥
大数据·运维·elasticsearch·搜索引擎·云原生·serverless
Agent手记3 小时前
制造业数字化升级:生产全流程企业级智能体落地解决方案 —— 基于LLM+超自动化全栈架构的智改数转深度实战
运维·ai·架构·自动化
云安全助手3 小时前
弹性云服务器+高防IP:让DDoS攻击不再是业务“生死劫”
运维·网络·安全
AC赳赳老秦3 小时前
OpenClaw二次开发实战:编写专属办公自动化技能,适配个性化需求
linux·javascript·人工智能·python·django·测试用例·openclaw
深色風信子3 小时前
Docker newapi
运维·docker·容器·newapi
mounter6253 小时前
【内核新动向】告别物理槽位束缚:深度解析 Linux Virtual Swap Space 机制
linux·内存管理·kernel·swap·virtual swap
handler014 小时前
从零实现自动化构建:Linux Makefile 完全指南
linux·c++·笔记·学习·自动化
2023自学中5 小时前
i.MX6ULL 板子的完整启动流程图(从上电 → 用户空间)
linux·嵌入式
闫利朋5 小时前
Ubuntu 24.04 桌面安装向日葵完整指南
linux·运维·ubuntu