Docker 镜像管理与阿里云镜像仓库学习笔记
一、Docker 镜像基础
1. 镜像(Image)
镜像是:
创建 Docker 容器的模板。
例如:
ubuntu:22.04 mysql:latest redis:latest查看本地镜像:
docker images输出:
IMAGE IMAGE ID SIZE二、容器与镜像关系
关系:
镜像 Image | | docker run ↓ 容器 Container镜像是模板,容器是运行实例。
例如:
docker run ubuntu:22.04根据 ubuntu 镜像创建容器。
三、docker images 命令
查看镜像:
docker images示例:
ubuntu-vim:1.1 383db0ca522c 337MB字段解释:
| 字段 | 含义 |
|---|---|
| IMAGE | 镜像名称 |
| TAG | 版本标签 |
| IMAGE ID | 镜像唯一编号 |
| DISK USAGE | 本地磁盘占用 |
| CONTENT SIZE | 镜像内容大小 |
四、镜像标签 Tag
镜像格式:
镜像名:标签例如:
ubuntu-vim:1.1其中:
ubuntu-vim → 镜像名称 1.1 → tag版本tag 可以自己定义
例如:
ubuntu-vim:v1 ubuntu-vim:test ubuntu-vim:prod常见:
v1 v2 1.0.0 dev test proddocker tag
作用:
给镜像添加新的名字。
格式:
docker tag 原镜像 新镜像名称例如:
docker tag ubuntu-vim:1.1 test:v1注意:
docker tag 不会复制镜像。
例如:
ubuntu-vim:1.1 | | ↓ IMAGE ID 383db0ca522c test:v1 | | ↓ IMAGE ID 383db0ca522c两个名字指向同一个镜像。
五、docker commit 创建镜像
这个流程本质是基于 Ubuntu 镜像创建一个容器 → 在容器里安装软件 → 保存成新的镜像。
完整命令如下:
1. 拉取 Ubuntu 镜像
docker pull ubuntu查看镜像:
docker images例如:
REPOSITORY TAG IMAGE ID ubuntu latest abc1234562. 创建并进入 Ubuntu 容器
docker run -it --name ubuntu-vim ubuntu /bin/bash解释:
run:创建并启动容器-it:交互模式,可以进入终端--name ubuntu-vim:给容器取名字ubuntu:使用 ubuntu 镜像/bin/bash:进入 bash 终端
进入后:
root@xxxx:/#说明已经进入 Ubuntu 容器。
3. 更新软件源
Ubuntu 默认没有 vim,需要先更新:
apt update4. 安装 vim
apt install vim -y检查:
vim --version如果出现版本信息:
VIM - Vi IMproved 9.x说明安装成功。
5. 退出容器
不要删除容器:
exit此时容器停止。
查看:
docker ps -a看到:
CONTAINER ID IMAGE NAME xxxx ubuntu ubuntu-vim6. 使用 docker commit 保存新镜像
格式:
docker commit 原容器名 新镜像名:版本例如:
docker commit ubuntu-vim ubuntu-vim:1.0意思:
把:
ubuntu-vim容器 + 安装好的vim ↓ 保存成 ubuntu-vim:1.0镜像7. 查看新的镜像
docker images结果:
REPOSITORY TAG ubuntu latest ubuntu-vim 1.0现在你有两个镜像:
ubuntu | | 创建容器 | | ubuntu-vim容器 | 安装vim | | docker commit | ↓ ubuntu-vim:1.0镜像8. 用新镜像启动测试
删除旧容器(可选):
docker rm ubuntu-vim用新镜像创建容器:
docker run -it --name test-vim ubuntu-vim:1.0 /bin/bash进入后:
vim test.txt发现 vim 已经存在。
命令格式
docker commit [参数] 容器ID 新镜像名:标签例如:
docker commit \ -m="ubuntu安装vim" \ -a="wxq" \ a045c9954d3e \ ubuntu-vim:1.1参数:
-m
提交说明:
-m="ubuntu安装vim"类似 Git:
git commit -m "说明"-a
作者:
-a="wxq"容器ID
例如:
a045c9954d3e来自:
docker ps -a新镜像
注意:
commit 不要求退出容器。
只要容器存在:
运行中 ✅ 停止状态 ✅ 删除 ❌六、Docker 镜像分层 Layer
Docker 镜像不是一个完整文件,而是多个层组成。
例如:
镜像 Layer3 安装vim Layer2 Ubuntu环境 Layer1 基础系统特点:
- 只读
- 可复用
- 节省空间
查看镜像历史:
docker history 镜像名七、阿里云 Container Registry
为什么需要镜像仓库?
本地镜像:
自己电脑无法方便给别人使用。
通过镜像仓库:
本地镜像 ↓ push 阿里云仓库 ↓ pull 其他服务器八、登录阿里云镜像仓库
命令:
docker login 仓库地址例如:
docker login \ crpi-xxxx.cn-beijing.personal.cr.aliyuncs.com输入密码。
成功:
Login Succeeded注意:
教程中的:
$ docker login其中$是终端提示符。
不要输入:
$ docker login应该输入:
docker login九、推送镜像到阿里云
完整流程:
本地镜像 ↓ docker tag ↓ 阿里云格式镜像 ↓ docker push ↓ 阿里云仓库1. docker tag
阿里云镜像格式:
仓库地址/命名空间/镜像名:标签例如:
crpi-xxx.aliyuncs.com/wxq2026/ubuntu-vim:1.1执行:
docker tag ubuntu-vim:1.1 \ crpi-xxx.aliyuncs.com/wxq2026/ubuntu-vim:1.12. docker push
上传:
docker push \ crpi-xxx.aliyuncs.com/wxq2026/ubuntu-vim:1.1成功后:
阿里云仓库出现:
ubuntu-vim 版本: 1.1十、从阿里云拉取镜像
命令:
docker pull 镜像地址例如:
docker pull \ crpi-xxx.aliyuncs.com/wxq2026/ubuntu-vim:1.1成功:
Digest: sha256:xxxx Status: Image is up to date十一、完整镜像发布流程
创建容器 ↓ 修改容器 ↓ docker commit ↓ 生成镜像 ↓ docker login ↓ docker tag ↓ docker push ↓ 阿里云镜像仓库 ↓ docker pull ↓ 其他机器使用