1, 下载registry镜像
sudo docker pull registry
2, 启动镜像
docker run -d --name registry -h registry -p 5000:5000 --privileged=true -v /home/wenbronk/Downloads/docker/repository:/var/lib/registry registry
# 镜像中文件的保存位置, 刚开始没连接对..后来使用exec命令 进行find -name 查找到的
参数说明:
-v /opt/registry:/tmp/registry :默认情况下,会将仓库存放于容器内的/tmp/registry目录下,指定本地目录挂载到容器
–privileged=true
:CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权,不加上传镜像会报权限错误(OSError: [Errno 13]
Permission denied: ‘/tmp/registry/repositories/liibrary’)或者(Received
unexpected HTTP status: 500 Internal Server Error)错误
3, 修改一下镜像的tag
sudo docker tag busybox 192.168.1.110:5000/wenbronk/busybox
4, 将打了tag的image上传
docker push 192.168.1.117:5000/wenbronk/busybox
注: 此处可能报错, 我的没有
Error: Invalid registry endpoint https://192.168.1.110:5000/v1/: Get https://192.168.112.136:5000/v1/_ping: dial tcp 192.168.112.136:5000: connection refused. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 192.168.112.136:5000` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/192.168.112.136:5000/ca.crt
因为Docker从1.3.X之后默认docker registry使用的是https,所以当用docker pull命令下载远程镜像时,如果远程docker registry是非https的时候就会报上面的错误。为了解决这个问题需要在启动docker server时增加启动参数修改docker启动配置文件
vim /etc/sysconfig/docker
Ubuntu下配置文件地址为:/etc/init/docker.conf),增加启动选项(已有参数的在后面追加),之后重启docker
OPTIONS='--insecure-registry 192.168.1.110:5000' #CentOS 7系统 other_args='--insecure-registry 192.168.1.110:5000' #CentOS 6系统
也可以使用nginx实现一个https链接
注: 此种方法可能不管用, 1.12.x以后没有该配置文件了
那么 在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入:
{ "insecure-registries":["192.168.1.110:5000"] }
5, 因为Docker从1.3.X之后,与docker registry交互默认使用的是https,而此处搭建的私有仓库只提供http服务 在docker公共仓库下载一个镜像
docker push 192.168.0.110:5000/busybox
6, 查询仓库中的镜像
docker search 192.168.0.110:5000