1、有网络情况:docker pull registry
2、无网络情况:
直接网上找registry.tar包,找了半天,没找到,而且无法得知版本是否是最新的
找一台能联网的机器,先从docker服务器拉取镜像,再通过docker save registry -o /d/docker/registry.tar命令导出到本地,
导出时报错了,
查找了一下,发现docker版本不同,这个导出脚本参数顺序不一样,1.13.1版本及以后用上述命令,之前的版本用docker save -o /d/docker/registry.tar registry
3、复制导出的jar包到无网络的机器,然后执行如下命令:
docker load -i file_path
4、启动镜像:
docker run -d -p 5000:5000 registry
默认情况下,会将仓库存放于容器内的/var/lib/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/var/lib/registry下:
docker run -d -v /app/registry:/var/lib/registry -p 5000:5000 registry
5、
在机器A准备一个镜像: docker pull hello-world
给hello-world镜像打个tag,表示新的版本: docker tag hello-world 192.168.1.2:5000/hello-world:latest
将新的hello-world镜像上传到私有仓库: docker push 192.168.1.2:5000/hello-world:latest
报错了:
原因是docker私有仓库服务器,默认是基于https传输的,所以我们需要在客户端192.168.1.160做相关设置,不使用https传输
[root@localhost ~]# vi /etc/docker/daemon.json
将下面的代码放进去保存并退出。
"insecure-registries":["192.168.1.2:5000"]
最终如下所示:
{
"registry-mirrors": ["https://njrds9qc.mirror.aliyuncs.com"],
"insecure-registries":["192.168.1.2:5000"]
}
依次执行下面两条命令,重新启动docker:
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
再次执行推送命令:
推送成功!
去私有仓库服务器查看:ls /app/registry/docker/registry/v2/repositories/
感谢网络各位大神的帮助。