Docker搭建私有仓库

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/

 

感谢网络各位大神的帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值