前言:
Docker仓库是用来包含镜像的位置,Docker提供了一个注册
服务器(Register)来保存多个仓库,每个仓库有可以包含多个具备不
同的tag镜像。Docker运行中使用的默认仓库是Docker Hub 公共仓
库。Docker Hub 是docker公司维护的公共仓库,用户可以免费的进
行使用,也可以购买自己的死有仓库。
本篇博客着重讲述以下关于docker私有仓库的搭建,这时因为docker
hub虽然方便,但是还是有很多限制的,比如,需要网络的连接,所有
人都可以进行访问,由于安全原因企业不允许将镜像放置在外网,因此
,我们需要搭建自己的私有仓库来满足企业的要求。
正文:
进行docker私有仓库的搭建:
进行软件的安装:
[root@server2 mnt]# ls
container-selinux-2.21-1.el7.noarch.rpm pigz-2.3.4-1.el7.x86_64.rpm
docker-ce-18.06.1.ce-3.el7.x86_64.rpm policycoreutils-2.5-17.1.el7.x86_64.rpm
libsemanage-2.5-8.el7.x86_64.rpm policycoreutils-python-2.5-17.1.el7.x86_64.rpm
libsemanage-python-2.5-8.el7.x86_64.rpm
[root@server2 mnt]# yum install -y * ###进行docker软件以及依赖性的安装
[root@server2 mnt]# systemctl start docker ###进行docker服务的启动
[root@server2 mnt]# systemctl enable docker ###进行docker服务的开机自启动
[root@server2 mnt]# docker info
进行docker软件的安装
进行docker信息的查看
进行regisrty镜像的导入,作为镜像的私有仓库
[root@server2 docker镜像]# docker load -i registry.tar ###进行镜像的导入
[root@server2 docker镜像]# docker load -i nginx.tar ###进行测试镜像的导入
[root@server2 docker镜像]# docker images ###进行当前镜像的查看
进行当前镜像的查看
进行registry容器的运行
[root@server2 ~]# docker tag registry:2.3.1 registry:2 ###进行镜像名称的变更
[root@server2 ~]# docker run -d --name registry -p 5000:5000 -v /opt/registry/:/var/lib/registry registry:2 ###进行registry容器的运行,平指定端口和挂载目录
进行当前运行容器的查看和端口的查看
[root@server2 ~]# docker ps ###进行当前运行容器的查看
[root@server2 ~]# netstat -antlp ###进行端口的查看
进行测试镜像名称的改变(可以与仓库进行对接)
[root@server2 ~]# docker tag nginx:latest localhost:5000/nginx ###进行测试镜像的改名
[root@server2 ~]# docker images ###进行当前镜像的查看
将本地镜像提交到仓库
[root@server2 ~]# docker push localhost:5000/nginx ###进行本地镜像的提交
由于我们指定了挂载目录,因此我们可以在挂载目录下进行镜像的查看
[root@server2 ~]# yum install tree -y ##3进行软件的安装
[root@server2 opt]# tree registry/ ###在挂载目录下进行仓库结构的查看
进行软件的安装
进行仓库结构的查看
可以看到镜像提交到了仓库。
我们在私有仓库进行拉去的测试:
[root@server2 opt]# docker rmi localhost:5000/nginx:latest ###我们进行之前镜像的删除
[root@server2 opt]# docker images ###进行当前镜像的拉取
进行镜像的拉取
[root@server2 opt]# docker pull localhost:5000/nginx ###在私有仓库进行镜像的拉取
[root@server2 opt]# docker images ###进行当前镜像的查看
我们可以看到镜像拉取成功,并且测试可以发现,拉取的速度是非常快的。
使用证书认证进行私有仓库的搭建:
[root@server2 docker]# mkdir -p /tmp/docker/certs/ ###进行证书存放目录的建立
root@server2 docker]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/westos.org.key -x509 -days 365 -out certs/westos.org.crt ###进行证书的建立
[root@server2 ~]# vim /etc/hosts ###进行解析的设定
进行解析的设定
为了后卖测试,我们删除当前的仓库容器
[root@server2 ~]# docker stop registry ###进行容器的停止运行
[root@server2 ~]# docker rm registry ###进行镜容器的删除
[root@server2 opt]# rm -rf registry/ ###进行之前挂载目录的删除
进行仓库容器的运行:
[root@server2 ~]# docker run -d \
> --restart=always \
> --name=registry \
> -v /tmp/docker/certs:/certs \
> -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
> -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt \
> -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key \
> -p 443:443 \
> -v /opt/registry:/var/lib/registry \
> registry:2
ec4e2f0677c0db106d608b573ee0852b410f750faa1e733a0ce7904f620ae72c
进行当前运行容器的查看及映射端口是否打开
[root@server2 ~]# docker ps ###进行当前运行容器的查看
[root@server2 ~]# netstat -antlp ###进行端口的查看
在配置目录下进行证书目录的创建,并将认证文件拷贝到配置目录中
[root@server2 certs.d]# mkdir -p /etc/docker/certs.d/westos.org/ ###进行存放认证文件目录的建立
[root@server2 westos.org]# cp /tmp/docker/certs/westos.org.crt ca.crt ###进行认证文件的拷贝
进行测试镜像的改名和镜像的推送
[root@server2 ~]# docker tag localhost:5000/nginx:latest westos.org/nginx
[root@server2 ~]# docker images ###进行当前镜像的查看
[root@server2 ~]# docker push westos.org/nginx ###进行镜像的推送
在挂载目录中进行查看
[root@server2 opt]# tree registry/ ###进行仓库结构的查看
可见,仓库中已经出现了推送的镜像,
在仓库中进行镜像的拉取测试:
进行之前的镜像的删除
[root@server2 opt]# docker rmi westos.org/nginx:latest ###进行镜像的删除
[root@server2 opt]# docker images ###进行镜像的查看
从仓库中进行镜像的拉取
[root@server2 opt]# docker pull westos.org/nginx ###进行镜像地拉取
[root@server2 opt]# docker images ###进行镜像地查看