这篇文章我们主要讲解创建docker私有仓库。
简单概述一下,就是docker提供了一个搭建私有仓库的镜像registry ,运行该镜像的容器并且对外暴露5000端口就算是搭建完成了。
一、安装运行docker-registry
docker run -d -v /data/registry:/var/lib/registry -p 5000:5000 --name myRegistry registry
docker ps -a 看一下
可以看出以上命令先是下载了registry镜像,然后运行该镜像容器。
其中:
-d 后台启动容器;
-p 端口映射 将容器的5000端口映射到host的5000端口;
-v 将容器的/var/lib/registry目录映射到host的/data/registry目录下,用于存放镜像数据。
默认情况下,仓库会被创建在容器的/var/lib/registry目录下。
二、推送镜像
我们以hello-world为例,先从公共仓库下载hello-world镜像,为这个镜像打个标签:
docker tag hello-world:latest 127.0.0.1:5000/hello-world:1.0
打完tag之后如图:
推送镜像:
docker push 127.0.0.1:5000/hello-world:1.0
查看有无推送成功,可以去/data/registry目录下去看,也可以浏览器输入host:5000/v2/_catalog去看,如下图:
或者:
三、从私有仓库下载镜像
我们先把原来的镜像删了:
docker rmi 127.0.0.1:5000/hello-world:1.0
然后从私有仓库下载:
docker pull 127.0.0.1:5000/hello-world:1.0
四、取消非https方式推送镜像
docker默认不允许非https方式推送镜像,也就是说,如果想同网段的其他地址想往这个仓库上推,127.0.0.1:5000铁定不行的,这个时候我们可以docker的配置选项来取消这个限制。
vim /etc/docker/daemon.json
如果不存在此文件就新增此文件。
更改内容如下:
{
"insecure-registries": ["XXXXXXX:5000"], #改成自己的ip,这里的符号啥的一定要注意
"registry-mirrors": ["https://lxo9r85y.mirror.aliyuncs.com"]
}
然后进行重启:
systemctl daemon-reload
systemctl restart docker.service
记得重启私有仓库。