Docker进阶-自定义镜像与镜像仓库
上篇回顾
之前已经学会了拉镜像、跑容器、用 Compose 管理多个服务。但一直用的是别人的镜像(nginx:alpine),博客文件靠挂载目录。
这次学两件事:自己写镜像 + 把镜像存到仓库。
第一部分:写自己的 Dockerfile
为什么要自己写镜像
之前跑 Nginx 是这样:
1 | |
每次都依赖外部文件挂载,换个机器就得重新准备文件。如果能把博客文件打进镜像内部,镜像自带一切,到任何地方 docker run 直接能跑。
第一个 Dockerfile
1 | |
每条指令解释:
| 指令 | 含义 |
|---|---|
FROM |
基于哪个基础镜像。所有 Dockerfile 第一行必须是 FROM |
COPY |
把宿主机文件复制到镜像内部 |
EXPOSE |
声明容器监听哪些端口,文档用途,不真正打开端口 |
RUN |
构建时执行命令(如 apt install) |
CMD |
容器启动时执行的默认命令 |
WORKDIR |
设置工作目录 |
ENV |
设置环境变量 |
构建镜像
1 | |
-t= tag,给镜像命名(名字:版本).= 用当前目录的 Dockerfile
踩坑:证书没打进镜像
v1 构建成功,但容器启动报错:
1 | |
排查:Dockerfile 里没有 COPY certs/,修复后 v2 正常。
教训:镜像构建时不会自动帮你猜缺什么,少一个 COPY 就少一个文件。
验证镜像
1 | |
第二部分:镜像存到仓库
本地镜像的问题
镜像只在 ECS 本地。换一台服务器就得重新构建,其他人也用不了。
用镜像仓库解决:
- 推到仓库 → 换个机器
docker pull→ 直接跑 - 版本管理:v1、v2、v3 清晰可查
- 配合 CI/CD:GitHub Actions 构建完自动推送
Docker Hub or 阿里云 ACR?
| Docker Hub | 阿里云 ACR | |
|---|---|---|
| 免费 | ✅ | ✅ 个人版 |
| 国内速度 | ❌ 基本没法用 | ✅ 很快 |
| 适合谁 | 开源项目 | 国内学习/公司项目 |
阿里云 ACR 配置
1. 创建实例
- https://cr.console.aliyun.com
- 创建个人版(免费)
2. 创建命名空间和仓库
- 命名空间
bingsv - 仓库
my-blog - 代码源选「本地仓库」
3. 设置访问凭证
- 左侧「访问凭证」→ 设置固定密码
推送镜像到仓库
1 | |
验证:从仓库拉取
1 | |
完整工作流
日常更新博客镜像的标准流程:
1 | |
镜像命名规范
1 | |
总结:Docker 技能链条
1 | |
这条线走通了,Docker 就算真正掌握了。
Docker进阶-自定义镜像与镜像仓库
https://bingsv.github.io/2026/07/03/Docker进阶-自定义镜像与镜像仓库/