Docke
r 本地私有镜像库部署与使用
- 文档资料
- 前提条件
- 部署本地私有镜像库
-
- 1. 获取 Docker Hub 中的 Registry 官方镜像
- 2. 拉取 Registry 镜像
- 3. 复查 Registry 官方镜像是否已完成下载
- 4. 创建 Registry 镜像的持久化路径
- 5. 启用 Registry 镜像
- 6. 复查 Region 容器状态
- 7. 调整配置文件 daemon.json
- 8. 刷新系统配置
- 9. 重启 Docker 服务
- 10. 复查本地私有镜像库配置是否生效
- 测试上传镜像至本地私有镜像库
-
- 1. 调整镜像标签
- 2. 复查标签是否生效
- 3. 上传镜像
- 4. 查看私有库存有的所有镜像
- 5. 查看指定镜像的所有标签
- 删除本地私有镜像库中的镜像
-
- 1. 获取指定标签的指定镜像的 sha256 值(镜像的 sha256 值为唯一标识)
- 2. 删除元数据信息
- 3. 删除实际数据
文档资料
- Docker 文档:https://www.docker.com/blog/how-to-use-your-own-registry-2
前提条件
- Docker-CE:需提前安装 Docker 服务
- Docker Hub:保证可从 docker hub 中获取镜像
部署本地私有镜像库
1. 获取 Docker Hub 中的 Registry 官方镜像
docker search --filter "is-official=true" registry # 输出结果 NAME DESCRIPTION STARS OFFICIAL AUTOMATED registry Distribution implementation for storing and … 3919 [OK]
2. 拉取 Registry 镜像
docker pull registry
3. 复查 Registry 官方镜像是否已完成下载
docker images registry # 输出结果 REPOSITORY TAG IMAGE ID CREATED SIZE registry latest b8604a3fe854 2 years ago 26.2MB
4. 创建 Registry 镜像的持久化路径
mkdir -p /data/service/docker/registry
5. 启用 Registry 镜像
# 参数解释 # -itd:在容器中打开一个伪终端进行交互操作,并在后台运行 # /data/service/docker/registry:/var/lib/registry:将容器内的 /var/lib/registry 目录映射至宿主机的 /data/service/docker/registry 目录 # -p 5000:5000:将容器内的端口号 5000 映射至宿主机的端口号 5000 # -e REGISTRY_STORAGE_DELETE_ENABLED="true": 允许删除镜像 # --restart=always:在容器退出时,总是重启容器 # --name registry:指定所创建容器的名称为 registry docker run -itd -v /data/service/docker/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest -e REGISTRY_STORAGE_DELETE_ENABLED="true"
6. 复查 Region 容器状态
docker ps -f "name=registry" # 输出结果 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 10461fcbf804 registry:latest "/entrypoint.sh /etc…" 8 months ago Up 2 weeks 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp registry
7. 调整配置文件 daemon.json
{ /* IP 地址为宿主机 IP 地址 * 端口号为后续重启容器时所映射的宿主机端口号 */ "insecure-registries": ["10.10.10.21:5000"] }
8. 刷新系统配置
systemctl daemon-reload
9. 重启 Docker 服务
systemctl restart docker
10. 复查本地私有镜像库配置是否生效
docker info | grep -A 2 "Insecure Registries" # 输出结果 Insecure Registries: 10.10.10.21:5000 127.0.0.0/8
测试上传镜像至本地私有镜像库
1. 调整镜像标签
# centos:7.9.2009:现有镜像与标签 # 10.10.10.21:5000/centos:7.9.2009:新标签 docker tag centos:7.9.2009 10.10.10.21:5000/centos:7.9.2009
2. 复查标签是否生效
docker image centos
3. 上传镜像
docker push 10.10.10.21:5000/centos:7.9.2009
4. 查看私有库存有的所有镜像
curl http://10.10.10.21:5000/v2/_catalog # 输出结果 {"repositories":["centos"]}
5. 查看指定镜像的所有标签
curl http://10.10.10.21:5000/v2/centos/tags/list # 输出结果 {"name":"centos","tags":["7.9.2009"]}
删除本地私有镜像库中的镜像
1. 获取指定标签的指定镜像的 sha256 值(镜像的 sha256 值为唯一标识)
curl -v --silent "10.10.10.21:5000/v2/centos/manifests/7.9.2009" 2>&1 | grep Docker-Content-Digest | awk '{print $3}'
2. 删除元数据信息
curl -I -X DELETE http://10.10.10.21:5000/v2/fbgweb//manifests/sha256:f807503d35c84442bac9eec105457d279e8b81d62d0235bb9dd0598887710e30 # 输出信息 HTTP/1.1 301 Moved Permanently Docker-Distribution-Api-Version: registry/2.0 Location: /v2/fbgweb/manifests/sha256:f807503d35c84442bac9eec105457d279e8b81d62d0235bb9dd0598887710e30 Date: Sat, 01 Apr 2023 03:13:34 GMT Content-Length: 0
3. 删除实际数据
# 登录镜像 docker exec -it registry /bin/sh # 按元数据信息,清理实际数据 registry garbage-collect /etc/docker/registry/config.yml