Docker仓库

推送镜像到阿里云仓库

       到阿里云创建一个镜像仓库https://cr.console.aliyun.com/cn-shenzhen/instances/repositories

       看阿里云文档

搭建私有仓库

       Docker Hub是Docker默认官方公共镜像仓库,搭建私有镜像仓库的话,官方也提供了registry镜像,使得搭建私有仓库非常简单。

      

       docker search registry

       docker pull registry

       docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart-always --name myrepositry registry

       #查看仓库的所有镜像

       curl http://localhost:5000/v2/_catalog

       #配置私有仓库可信任

       vi /etc/docker/daemon.json

       -------------------------------------

{"insecure-registries":["公网地址:5000"]}

       -------------------------------------

systemctl restart dockr

#给镜像打标签

docker tag centos:latest 公网地址:5000/mycentos:1.0

#上传镜像

docker push 公网地址:5000/mycentos:1.0

#下载镜像
       docker pull 公网地址:5000/mycentos:1.0

       #下载

       docker pull 公网地址:5000/mycentos:1.0

       列出镜像标签

       curl http://localhost:5000/v2/mycentos/tag/list

Harbor

       VMWare公司开源的企业级Docker容器镜像私有仓库,以Docker Registry为基础进行相应的企业级扩展,从而获得了更广泛的应用,这些新特性包括管理用户界面、基于角色的访问控制/LDAP继承及审计日志等,同时还支持原生中文,每个组件都是以Docker容器的形式构建的,用于部署Harbor的Docker Compose模板位于/Deployer/docker-compose.yml,由5个容器组成,这几个容器通过Docker Link的形式连接在一起,在容器之间通过容器名字互相访问,对终端用户而言,只需要暴露Proxy(Nginx代理)的服务端口。

       说白了,就是在Docker Registry基础上增了UI和权限控制的私有仓库。

核心组件

       ProxyNginx服务器构成反向代理;

       Registry由Docker官方的开源Registry镜像构成容器实例;

       UIB/S架构的Web界面;

       Service构成此容器的代码,也是Harbor项目的主体;

       MySQL官方MySQL镜像构成的数据库容器;

       Log运行着rsyslogd的容器,通过log-driver的形式和其他容器的日志;

安装条件

       Python为2.7或以上版本

       Docker引擎为1.10或以上版本

       Docker Compose为1.6.0或以上版本

安装

1、解压软件包: tar xvf harbor-offline-installer-.tgz

       https://github.com/vmware/harbor/releases/download/v1.2.0/harbor-offline-installer-v1.2.0.tgz

       2、配置harbor.cfg

              a、必选参数

                     hostname:目标的主机名或者完全限定域名

                     ui_url_protocol:http或https,默认为 。默认为http

                     db_password:用于db_auth的MySQL数据库的根密码。更改此密码进行任何生产用途

                     max_job_workers:(默认值为3)作业服务中的复制工作人员的最大数量。对于每个映像复制作业,工作人员将存储库的所有标签同步到远程目标。增加此数字允许系统中更多的并发复制作业。但是,由于每个工作人员将存储库的所有标签同步到远程目标。增加此数字允许系统中更多的并发复制作业。但是,由于每个工作人员都会消耗一定数量的网络/CPU/IO资源,请根据主机的硬件资源,仔细选择该属性的值资源,请根据主机的硬件资源,仔细选择该属性的值

                     customize_crt:(on或off,默认为on)当此属性打开时,prepare脚本将为注册表的令牌的生成脚本将为注册表的令牌的生成/验证创 建私钥和根证书

                     ssl_cert:SSL证书的路径,仅当协议设置为 证书的路径,仅当协议设置为https时才应用

                     ssl_cert_key:SSL密钥的路径,仅当协议设置为 密钥的路径,仅当协议设置为https时才应

                     secretkey_path:用于在复制策略中加密或解密远程注册表的密码的密钥路径

       3、创建 、创建 https 证书以及配置相关目录权限

              openssl genrsa -des3 -out server.key 2048

              openssl req -new -key server.key -out server.csr

              cp server.key server.key.org

              openssl rsa -in server.key.org -out server.key

              openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

              mkdir  /data/cert

              chmod -R 777 /data/cert

       4、运行脚本进行安装

              ./install.sh

             

       5、访问测试

              https://reg.yourdomain.com的管理员门户(将reg.yourdomain.com更改为您的主机名harbor.cfg)。请注意,默认管理员用户名 密码为admin / Harbor12345

       6、上传镜像进行上传测试

              a、指定镜像仓库地址

                     vim /etc/docker/daemon.json

                     { "insecure-registries": ["serverip"] }

              b、下载测试镜像

                     docker  pull  hello-world

             

              c、给镜像重新打标签

                     docker tag serverip/hello-world:latest

             

              d、登录进行上传

                     docker login serverip

      

       7、其它Docker 客户端下载测试

              a、指定镜像仓库地址

                     vim /etc/docker/daemon.json

                     { "insecure-registries": ["serverip"] }

             

              b、下载测试镜像

                     docker pull  serverip/hello-world:latest