乐趣区

Docker-Registry搭建私有镜像仓库

微服务的镜像会上传到 Docker 仓库保存,常用的公网 Docker 仓库有阿里云,网易云等,在企业局域网也可以搭建自己的 Docker 私有仓库,本教程使用 Docker 提供的私有仓库 registry。

1. 拉取私有仓库镜像

docker pull registry 

2. 创建启动私有仓库容器

docker run -dit -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name docker-registry registry

参数说明

  • -dit:在容器中打开一个伪终端进行交互操作, 并在后台运行
  • -v:把宿主机的 /data/registry 目录挂载到容器 /var/lib/registry 目录(这个目录是 registry 容器中存放镜像文件的目录), 来实现数据的持久化
  • -p:映射端口, 访问宿主机的 5000 端口就访问到 registry 容器的服务了
  • –restart=always:这是重启的策略, 假如这个容器异常退出会自动重启容器
  • –name docker-registry:创建容器命名为 docker-registry, 你可以随便命名
  • registry:pull 下来的镜像


上边显示 registry 镜像已经创建,并且 docker-registry 容器已经启动成功。访问:http://139.9.40.41:5000/v2/_catalog,响应结果如下:

{"repositories":[]}

上边的响应结果说明在 docker 私有仓库中还没有镜像。

默认 docker-registry 只允许 https 提交镜像,如下配置使 docker-registry 支持 http,在 /etc/docker 下,创建 daemon.json 文件,写入:

{"insecure-registries": [ "139.9.40.41:5000"]
}

3. 重启 docker

systemctl restart docker

4. 镜像上传至私有仓库
标记此镜像为私有仓库的镜像

docker tag docker.io/hello-world 139.9.40.41:5000/hello-world:v1

上传标记的镜像

docker push 139.9.40.41:5000/hello-world:v1

列出所有镜像
[root@2 docker]# curl http://139.9.40.41:5000/v2/_catalog
{“repositories”:[“hello-world”]}

退出移动版