1、安装运行私有register容器
docker run -d -v /myregistry:/var/lib/registry -p 5000:5000 --name xuRegistry registry
参数说明:
-d 后台启动容器
-p 端口映射 将容器的5000端口映射到Host的5000端口
-v 将容器的/var/lib/registry目录映射到Host的myregistry,用于存放镜像数据
验证是否成功可以通过访问 http:// host:5000/v2
2、push镜像到仓库
Note:以推送hello-world到私有仓库为例
2.1 docker images查看所有镜像
2.2 通过docker tag将hello-world镜像标志为要推送到私有仓库,镜像名称由repository和tag两部分组成
而repository的完整格式为:host:post/username/xxx,只有Docker Hub上的镜像可以省略:host:post
docker tag hello-world:latest hostip:5000/xu/hello-world:latest
2.3 通过 docker push 命令将hello-world镜像 push到私有仓库中
docker push hostip:5000/xu/hello-world:latest
Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,所以与私有镜像交时出现以下错误。
http: server gave HTTP response to HTTPS client
解决方案:
方案一:
vim /usr/lib/systemd/system/docker.service
在12行后面增加 --insecure-registry host:5000
修改好后重启docker 服务
systemctl daemon-reload systemctl restart docker.service
重启docker服务后,将容器重启
docker start $(docker ps -aq)
方案二:
vim /etc/docker/daemon.json
增加内容
{ "insecure-registries": ["host:5000"] }
修改好后重启docker 服务
systemctl daemon-reload systemctl restart docker.service
重启docker服务后,将容器重启
docker start $(docker ps -aq)
然后重新push到私有库,应该就能成功了
可以通过访问host:5000/v2/_catalog验证推送是否成功