layout: post
title: 构建Docker私有仓库
date: 2018-04-20
tags: [“Docker”,”自动化运维工具”]


构建Docker仓库有两种方式

1、通过epel仓库安装Docker仓库的rpm包。

2、通过docker守护进程pull一个registry镜像。

一、通过yum安装docker仓库

  1. yum install -y docker-registry docker-distribution registrycentosextras仓库。
  2. 软件包 docker-registry 已经被 docker-distribution 取代,改为尝试安装 docker-distribution-2.6.2-1.git48294d9.el7.x86_64
  3. .
  4. .
  5. .
  6.  
  7. docker-distribution是一个httphttps服务,其提供registry的命令行接口
  1. [root@ansible_master ~]# rpm -ql docker-distribution
  2. /etc/docker-distribution/registry/config.yml #配置文件
  3. /usr/bin/registry #可执行文件
  4. /usr/lib/systemd/system/docker-distribution.service
  5. /usr/share/doc/docker-distribution-2.6.2
  6. /usr/share/doc/docker-distribution-2.6.2/AUTHORS
  7. /usr/share/doc/docker-distribution-2.6.2/CONTRIBUTING.md
  8. /usr/share/doc/docker-distribution-2.6.2/LICENSE
  9. /usr/share/doc/docker-distribution-2.6.2/MAINTAINERS
  10. /usr/share/doc/docker-distribution-2.6.2/README.md
  11. /var/lib/registry #镜像存储位置

查看registry的配置文件

  1. version: 0.1 #版本
  2. log:
  3. fields:
  4. service: registry
  5. storage:
  6. cache:
  7. layerinfo: inmemory #使用内存缓存
  8. filesystem:
  9. rootdirectory: /var/lib/registry #镜像存储位置
  10. http:
  11. addr: :5000 #对外提供的端口

启动仓库服务

  1. [root@ansible_master etc]# systemctl start docker-distribution

push一个镜像到镜像仓库

  1. 注意:使用非docker官方镜像,需要配置配置文件
  2. vim /etc/docker/daemon.json
  3. {
  4. "insecure-registries": ["127.0.0.1:5000"]
  5. }
  6. systemctl restart docker
  1. docker tag nginx:1.12-alpine 127.0.0.1:5000/nginx:alpine_v1 #为镜像重打标签
  2. docker push 127.0.0.1:5000/nginx:alpine_v1 #上传镜像
  3. The push refers to repository [127.0.0.1:5000/nginx] #镜像仓库
  4. 68695a6cfd7d: Pushed
  5. c1dc81a64903: Pushed
  6. 8460a579ab63: Pushed
  7. d39d92664027: Pushed
  8. alpine_v1: digest: sha256:812dd32216edcfd41decaacc8fe7cae80b39e5a87b0b8923bc15c4db94cf5bdb size: 1153

查看仓库的镜像存放

  1. [root@ansible_master blobs]# cd /var/lib/registry/docker/registry/v2/blobs/sha256/
  2. [root@ansible_master sha256]# tree .
  3. .
  4. ├── 24
  5. └── 24ed1c575f8176d90af60ed57f89a9bae0e16c56b48519311f48b106e0e0c407
  6. └── data
  7. ├── 55
  8. └── 550fe1bea624a5c62551cf09f3aa10886eed133794844af1dfb775118309387e
  9. └── data
  10. ├── 81
  11. └── 812dd32216edcfd41decaacc8fe7cae80b39e5a87b0b8923bc15c4db94cf5bdb
  12. └── data
  13. ├── af
  14. └── af3988949040d4843cce89896dbc55cc29c1ffabf917167ebabe4214e6e66233
  15. └── data
  16. ├── c2
  17. └── c20f0a205eaa02418dc50ce73e8f0dcd680aee77e04338b81b5d92117e6f9d49
  18. └── data
  19. └── d6
  20. └── d6642feac7289087182c44548776c392c5cf9ccc73289541335b4c4634670c70
  21. └── data
  22.  
  23. 12 directories, 6 files
  24.  
  25. #注意,镜像是分层构建的,每一层都是由一个sha256的hash值命名的。

二、通过镜像启用仓库

  1. docker search registry
  2. docker pull registry
  3. docker run -itd --name registry registry

vmware / harbor 企业级专业仓库" class="reference-link">三、vmware/harbor 企业级专业仓库

安装要求

Harbor的先决条件部署为多个Docker容器,因此可以部署在任何支持Docker的Linux发行版上。目标主机需要安装Python,Docker和Docker Compose。

Hardware(硬件要求)

Software(软件要求)

Network ports

1、安装

下载harbor:http://harbor.orientsoft.cn/https://github.com/vmware/harbor/releases

安装docker-compose

  1. yum install -y docker-ce docker-compose openssl

配置harbor

  1. tar -xf harbor-offline-installer-v1.4.0.tgz

必须配置的配置项

  1. hostname: #外网地址或域名,否则docker login无法登录
  2. db_password: #数据库密码(harbor的镜像)
  3. max_job_workers: #尽量调大
  4. customize_crt: #证书配置
  5. ssl_cert:
  6. ssl_cert_key:
  7. secretkey_path:
  8. log_rotate_count:
  9. log_rotate_size:

要更改Harbour的配置,请先停止现有的Harbour实例并更新harbour.cfg。然后运行准备脚本来填充配置。最后重新创建并启动Harbour的实例:

  1. $ sudo docker-compose down -v
  2. $ vim harbor.cfg
  3. $ sudo prepare
  4. $ sudo docker-compose up -d

在保留图像数据和Harbour的数据库文件的同时去除Harbour的容器:

  1. $ sudo docker-compose down -v

删除Harbour的数据库和图像数据(用于干净的重新安装)

  1. $ rm -r /data/database
  2. $ rm -r /data/registry

2、push镜像到镜像仓库需要现创建Repository(登录http://harbor/ acount:admin,pass:admin,创建项目)

3、关闭harbordocker-compose down

文档更新时间: 2020-03-27 13:42   作者:张尚