一、用例环境
服务器:x86虚拟机
ip:192.168.218.128
二、搭建本地镜像
2.1 准备工作
因为此例搭建本地仓库使用的是无安全认证方式,这种方式需要使用粗暴的方式直接关闭防火墙和selinux。
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭selinux
vi /etc/selinux/config
SELINUX设置为disabled
执行
setenforce 0
2.2 搭建docker registry
docker搭建本地仓库,需要使用registry容器。
首先下载registry容器
x86上直接下载registry即可
docker pull registry
创建一个本地目录用于仓库存储
mkdir /myregistry
下载完成后运行registry容器
docker run -d -p 5000:5000 --naem registry -v /myregistry:/var/lib/registry registry
正常情况下应该能够看到registry容器已经启动,且5000端口已经在网络上开放
启动后应该可以打开浏览器访问registry服务器的ip
例如:http://192.168.218.128:5000/v2/_catalog
查看到{"repositories": []} 表示现在仓库中,没有镜像images
下面我们上传一个镜像到registry中
首先下载一个镜像
docker pull busybox
给镜像重新打tag
docker tag docker.io/busybox 192.168.218.128:5000/busybox
打完tag后能够在本地看到一个新的image
上传镜像到registry中
docker push 192.168.218.128:5000/busybox
如果在执行镜像上传的过程中出现了如下问题:
可能是因为我们我们启动的registry不是安全可信的,需要修改docker的启动参数,编辑/usr/lib/systemd/system/docker.service文件,在docker的启动参数后添加--insecure-registry 192.168.218.128:5000表示当前的registry为不安全的registry,允许不经过认证的访问。
配置修改完成后,需要重新启动docker
systemctl daemon-reload
systemctl restart docker
重新启动docker后需要启动registry镜像
docker start registry
再次push镜像
docker push 192.168.218.128:5000/busybox
镜像上传成功后可以查看本地的/myresigtry目录,应该能够看到已经上传的镜像,同时访问浏览器地址也能够看到repositories中已经有了新的镜像。
再次访问 http://192.168.218.128:5000/v2/_catalog 页面能够看到更新的信息
说明镜像已经成功上传到registry库中。
可以将本地的镜像删除后再从registry库中pull下来测试重新获得busybox镜像
docker rmi 192.168.218.128:5000/busybox
docker pull 192.168.218.128:5000/busybox
至此,表示我们的registry已经成功建立。
这种构建docker仓库的方式最为简便,但是没有任何安全保障,我们直接将docker仓库暴露于网络中,非常容易被攻击,因此在实际应用中通常都不会采用这种方式来搭建镜像库,一般来说都需要采用加密认证的方式来构建docker镜像库。