| 一.什么是仓库 
 ??????? Docker 仓库是用来包含镜像的位置,Docker提供一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。 ??????? Docker运行中使用的默认仓库是 Docker Hub 公共仓库。 二、Docker Hub 
 docker hub是docker公司维护的公共仓库,用户可以免费使用,也可以购买私有仓库。 https://hub.docker.com 可以去注册一个!再看它的官方文档去了解了解。 三、本地仓库搭建及其Registry 工作原理1.先清理之前的实验 
 ?docker image prune?docker container prune
  ?
 2.搭建仓库(1)下载registry镜像
 ?(2)运行registry容器并开放5000端口 
 ?docker run -d --name registry -p 5000:5000 registry??? #启动本地仓库,端口映射为5000 
 ?(3)仓库作用:先上传镜像到本地仓库(本地镜像在命名时需要加上仓库的ip和端口)
 
 先查看有哪些镜像 docker tag ubuntu:latest localhost:5000/ubuntu:latest ?docker push localhost:5000/ubuntu 上传 上传成功后本地路径中也产生了文件删除之后,重新加载,之前的内容依然存在
  ?
  
 ?docker rmi localhost:5000/ubuntu:latest?? 10? docker tag ubuntu:latest localhost:5000/ubuntu:latest
 ?? 11?? docker push localhost:5000/ubuntu? 此处会报错
 ? ? ?  
 可以看到成功了,但是这个库目前任何人都可以访问,不安全,下面我们要增加库的安全性 3、为仓库添加证书加密功能(1)安装必要软件 
 先把registy停掉 docker stop registryregistry
 [root@server4 ~]#? docker rm registry
 registry
 要安装的软件原位置:lftp 172.25.254.111:/pub/docs/docker> mirror openssl11/ 进入目录,直接?yum install? -y *  ?
 ?(2)生成密钥 
 ????? 首先,做到这里时出现过由于ssl版本太低的问题,这是因为执行opsenssl那个命令的时候,没有用最新版,解决办法就是删掉registry,再从mkdir certs开始做起,下面的内容是经过改进后,直接用最新版ssl的步骤。记得删掉原来的文件 
  
 创建一个目录certs用来保存密钥创建目录,编辑本地解析文件,后边用得上
 ?  
 ?然后创建加密认证的密钥, ?openssl11 req -newkey rsa:4096 -nodes -sha256 -keyout certs/westos.org.key? -addext "subjectAltName = DNS:reg.westos.org" -x509 -days 365 -out certs/westos.org.crt 接着是添加一些信息 结束后certs里会有文件 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 运行docker容器????? -v表示挂载 docker run -d --restart=always --name registry? -v "$(pwd)"/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 registry %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 标记重命名nginx并归类到本地reg.westos.org仓库中然后上传容器:
 docker tag nginx:latest reg.westos.org/nginx:latest
 docker push reg.westos.org/nginx:latest
 此时发现上传容器的时候,报错了,如下图的错误, 
 ?  
 解决办法:?mkdir -p /etc/docker/certs.d/reg.westos.org
 cp /root/certs/westos.org.crt /etc/docker/certs.d/reg.westos.org/ca.crt
 重新标记上传docker push reg.westos.org/nginx:latest
 ?4.添加认证功能 
 创建认证目录并进入?? mkdir auth需要安装认证的软件??? yum install -y httpd-tools-2.4.6-88.el7.x86_64
 ?  
 为用户admin和cyy添加密码 ?htpasswd -Bc auth/htpasswd admin? htpasswd -B auth/htpasswd cyy
  ?
  
 ?删除之前的仓库信息registry,docker rm -f registry 运行容器并查看进程! docker run -d --restart=always --name registry -v "$(pwd)"/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 -v "$(pwd)"/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -p 443:443 registry 
  
 ?测试:docker push reg.westos.org/nginx:latest??? 上传文件,有报错,因为没有登陆 解决办法:登陆 docker login reg.westos.org 显示登陆成功后,就可以上传了  ?
  
 信息都在? /root/.docker/config.json 登陆信息都在这 下次不需要在登陆 一劳永逸,不需要传一次登一次 除非执行了logout 
 ? |