镜像仓库
字数: 0 字 时长: 0 分钟
Docker 镜像仓库
字数: 0 字 时长: 0 分钟
1. 镜像仓库概述
Docker 镜像除了可以保存在本地,也可以上传到镜像仓库中统一管理。
常见的镜像仓库包括:
- Docker Hub:Docker 官方公共镜像仓库
- 私有 Registry:自己搭建,只在内部使用
简单来说:
Docker Registry 可以理解为专门存放 Docker 镜像的仓库,作用类似于 GitHub 存放代码。
2. 搭建私有镜像仓库
2.1 Docker Registry
Docker 官方提供了 registry 镜像,可以快速搭建一个简单的私有镜像仓库。
bash
docker run -d \
--restart=always \
--name registry \
-p 5000:5000 \
-v registry-data:/var/lib/registry \
registry参数说明:
| 参数 | 作用 |
|---|---|
--restart=always | Docker 重启后自动启动 Registry |
--name registry | 容器名称 |
-p 5000:5000 | 将宿主机 5000 端口映射到 Registry |
-v registry-data:/var/lib/registry | 持久化保存镜像仓库数据 |
registry | 使用官方 Registry 镜像 |
其中:
text
/var/lib/registry是 Registry 在容器中保存镜像数据的目录。
可以访问:
text
http://服务器IP:5000/v2/_catalog查看当前私有镜像仓库中保存的镜像。
2.2 带 Web UI 的 Registry
Docker Registry 本身没有图形化管理界面,可以通过 Docker Compose 再启动一个 Web UI。
yaml
services:
registry:
image: registry
ports:
- "5000:5000"
volumes:
- ./registry-data:/var/lib/registry
ui:
image: joxit/docker-registry-ui:static
ports:
- "8080:80"
environment:
- REGISTRY_TITLE=Docker 私有镜像仓库
- REGISTRY_URL=http://registry:5000
depends_on:
- registry启动:
bash
docker compose up -d其中:
text
5000 → Registry 镜像仓库端口
8080 → Web UI 管理界面端口因此:
text
http://服务器IP:8080用于访问 Web UI,而真正用于 docker push 和 docker pull 的 Registry 地址是:
text
服务器IP:50003. 配置 Docker 信任地址
如果私有 Registry 使用的是 HTTP,而不是 HTTPS,Docker 默认不会信任该地址。
需要修改:
bash
vi /etc/docker/daemon.json加入:
json
{
"insecure-registries": [
"192.168.150.101:5000"
]
}然后重新加载配置并重启 Docker:
bash
systemctl daemon-reload
systemctl restart docker这里的
5000是 Registry 端口,不是 Web UI 的8080端口。
4. 推送和拉取镜像
4.1 给镜像重新打 Tag
假设本地已经有:
text
nginx:latest要推送到私有仓库,需要先重新添加 Tag:
bash
docker tag nginx:latest 192.168.150.101:5000/nginx:1.0可以理解为:
text
原镜像
nginx:latest
↓
重新命名
↓
192.168.150.101:5000/nginx:1.0镜像名称中的仓库地址告诉 Docker:
这个镜像以后需要推送到哪个 Registry。
4.2 推送镜像
执行:
bash
docker push 192.168.150.101:5000/nginx:1.0将镜像上传到私有镜像仓库。
4.3 拉取镜像
其他服务器可以通过:
bash
docker pull 192.168.150.101:5000/nginx:1.0从私有镜像仓库下载镜像。
整个过程可以理解为:
text
本地镜像
nginx:latest
↓
docker tag
↓
192.168.150.101:5000/nginx:1.0
↓
docker push
↓
私有 Registry
↓
docker pull
↓
其他 Docker 主机5. 小结
私有镜像仓库主要涉及三个操作:
bash
# 给镜像添加私有仓库地址
docker tag nginx:latest 192.168.150.101:5000/nginx:1.0
# 推送镜像
docker push 192.168.150.101:5000/nginx:1.0
# 拉取镜像
docker pull 192.168.150.101:5000/nginx:1.0简单记住:
tag指定镜像要去哪个仓库,push上传镜像,pull下载镜像。