Docker学习笔记:本地私有仓库

Docker 官方提供了一个搭建私有仓库的镜像 registry ,只需把镜像下载下来,运行容器并暴露5000端口,就可以使用了。

$  docker pull registry:2

$  docker run -d -v /opt/registry:/var/lib/registry -p 8080:5000 --name registry-test registry:2

Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了。

浏览器访问http://localhost:8080/v2,出现下面情况说明registry运行正常。

 

#要通过docker tag将该镜像标志为要推送到私有仓库:
$  docker tag nginx:latest localhost:8080/nginx:latest

#通过 docker push 命令将 nginx 镜像 push到私有仓库中:
$  docker push localhost:8080/nginx:latest

再去访问 http://localhost:8080/v2/_catalog 查看私有仓库目录,可以看到刚上传的镜像了:

 

#拉取本地私有仓库的镜像,使用如下命令:
$  docker pull localhost:8080/nginx:latest

问题1.

    Docker默认使用的是https,但是搭建私有镜像默认使用的是http服务,所以在拉去私有镜像或者下载时会出现以下类似的错误:

The push refers to repository [aiho.site:8080/redis]
Get https://aiho.site:8080/v2/: http: server gave HTTP response to HTTPS client

 解决办法:

     修改docker daemon的启动参数(需要访问仓库的其他机器),添加如下参数,表示信任这个私有仓库,不进行安全证书检查(centos7为例)

$  vi /etc/docker/daemon.json

{
   "insecure-registries":["本地仓库所在IP:8080"]
}

下面是我的配置:

#然后重启docker服务,重启registry服务,

$  systemctl restart docker
$  docker restart registry-test

再去推送到本地仓库活或者其他IP拉取都正常了!!


原文地址:https://www.cnblogs.com/chenghu/p/14707969.html