搭建私有镜像仓库

搭建镜像仓库可以基于 Docker 官方提供的 Docker Registry 来实现。官网地址

简化版镜像仓库

Docker 官方的 Docker Registry 是一个基础版本的 Docker 镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。搭建方式比较简单,命令如下:

  1. docker run -d \
  2. --restart=always \
  3. --name registry \
  4. -p 5000:5000 \
  5. -v registry-data:/var/lib/registry \
  6. registry

命令中挂载了一个数据卷 registry-data 到容器内的 /var/lib/registry 目录,这是私有镜像库存放数据的目录。

访问 http://halo:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像

带有图形化界面版本

使用 Docker Compose 部署带有图象界面的 Docker Registry,命令如下:

  1. version: '3.0'
  2. services:
  3. registry:
  4. image: registry
  5. volumes:
  6. - ./registry-data:/var/lib/registry
  7. ui:
  8. image: joxit/docker-registry-ui:static
  9. ports:
  10. - 8181:80
  11. environment:
  12. - REGISTRY_TITLE=Halo-Docker-Registry
  13. - REGISTRY_URL=http://registry:5000
  14. depends_on:
  15. - registry

配置 Docker 信任地址,私服采用的是 http 协议,默认不被 Docker 信任,所以需要做一个配置:

# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
"insecure-registries":["http://halo:8181"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

推送、拉取镜像

推送镜像到私有镜像服务必须先 tag,步骤如下:

① 重新 tag 本地镜像,名称前缀为私有仓库的地址:halo:8181/

docker tag nginx:latest halo:8181/nginx:1.0

② 推送镜像

docker push halo:8181/nginx:1.0

③ 拉取镜像

docker pull halo:8181/nginx:1.0