Docker搭建本地私有仓库的详细步骤
Dockers不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有仓库。使用私有仓库有许多优点:
一、节省网络带宽,针对于每个镜像,不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可;
二、提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用;
搭建私有仓库
首先在136机器上下载registry镜像
docker pull registry
下载完之后我们通过该镜像启动一个容器
docker run -d -p 5000:5000 registry
默认情况下,会将仓库存放于容器的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,
所以我们一般情况下会指定本地一个目录挂载到容器的/tmp/registry下
docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
(-p参数--红色的5000是物理机上的端口,可以任意的改变,例如写成5001,4000等,tag镜像命名的时候,出现的端口号也是这个物理主机上的端口号,粉色的5000是docker容器里面对应的端口号,这个粉色的值时一般是不能改变的;
-v参数---蓝色的部分是物理主机上一个空间比较大的目录,可以任意的命名,红色部分对应的是容器里面的/tmp/registry目录,一般是固定不变的
)
docker run -d -v /opt/registry:/var/lib/registry -p 5001:5000 --restart=always --name registry registry:latest---有可能容器里面的这个固定目录变成这个了
可以看到我们启动了一个容器,地址为:192.168.112.136:5000
接下来我们就要操作把一个本地镜像push到私有仓库中
在132机器下pull一个比较小的镜像来测试(此处使用的是busybox)
docker pull busybox
接下来修改一下该镜像的tag
docker tag busybox 192.168.112.136:5000/busybox
接下来把打了tag的镜像上传到私服
docker push 192.168.112.136:5000/busybox
因为Docker从1.3.X之后默认docker registry使用的是https,所以当用docker pull命令下载远程镜像时,如果远程docker registry是非https的时候就会报上面的错误。
为了解决这个问题需要在启动docker server时增加启动参数
修改docker启动配置文件(此处是修改132机器的配置)Ubuntu下配置文件地址为:/etc/init/docker.conf
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://hn3vy3ry.mirror.aliyuncs.com"],
"insecure-registries":["10.37.210.125:5001","172.19.146.100:4000"]
}
重启完之后我们再次运行推送命令,把本地镜像推送到私有服务器上
$ sudo docker push 192.168.112.136:5000/busybox
仓库名把指定了把镜像推送和拉取镜像到哪个私有服务器上
删除了本地镜像,然后我们从私有镜像仓库中下载该镜像
sudo docker pull 192.168.112.136:5000/busybox