标签Registry

harbor 镜像仓库

代码仓库
项目网站
离线包下载

安装

  1. 安装 docker
  2. 安装 docker-compose
  3. 下载 harbor
    wget https://github.com/goharbor/harbor/releases/download/v1.10.0/harbor-offline-installer-v1.10.0.tgz
  4. 解压
  5. 创建数据目录
    /data/harbor
  6. 创建CA证书
    /data/harbor/cert

    • 创建CA的证书
      openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt
    • 生成CA证书签名请求
      openssl req -newkey rsa:4096 -nodes -sha256 -keyout harbor.xxx.com.key -out harbor.xxx.com.csr
    • 生成注册主机的证书
    1. 使用域名生成注册主机证书
      openssl x509 -req -days 365 -in harbor.xxx.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out harbor.xxx.com.crt
    2. 使用IP生成注册主机证书
      echo subjectAltName = IP:192.168.88.88 > extfile.cnf
      openssl x509 -req -days 365 -in harbor.xxx.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out harbor.xxx.com.crt
  7. 配制 配置文件 harbor.cfg or harbor.yml

#配置访问的地址
hostname = 198.168.88.88
#使用http方式访问管理界面
ui_url_protocol = http
#配置admin的密码,默认是Harbor12345
harbor_admin_password = 12345
#更改harbor存储路径,默认是/data
secretkey_path = /data/harbor
certificate: /data/harbor/cert/harbor.xxx.com.crt
private_key: /data/harbor/cert/harbor.xxx.com.key
  1. 配置文件docker-compose.yml
  /compose_location/docker-compose.yml
  1. 检测并创建harbor需要文件
    ./prepare
  2. 安装Harbor
    ./install.sh

  3. 保存数据重新安装 (先进入harbor目录)
    docker-compose up -d
    docker-compose down -v
    ./install.sh可以重新安装

默认安装管理Harbor的生命周期

ocker-compose ps 查看
开始、停止、重启
您可以使用docker-compose来管理Harbor的生命周期。一些有用的命令列出如下(必须与docker-compose.yml在同一目录中运行)。
sudo docker-compose start/stop/restart
更新配置
要更改Harbour的配置,请先停止现有的Harbor实例并进行更新harbor.cfg。然后运行prepare脚本以填充配置。最后重新创建并启动Harbor的实例:
sudo docker-compose down -v
sudo vim harbor.cfg
sudo prepare
sudo docker-compose up -d
删除Harbor的容器,同时将镜像数据和Harbor的数据库文件保存在文件系统上
sudo docker-compose down -v
删除Harbor的数据库和镜像数据(用于干净的重新安装)
rm -r /data/database
rm -r /data/registry

  1. 管理界面
    注:默认的用户名admin,密码Harbor12345。

  2. 错误

    • Error response from daemon: Get https://harbor.xxx.com/v1/users/: x509: certificate signed by unknown authority
      centos7系统以上报错的原因是因为自签的证书没有加入到系统级别信任,只需要将harbor.xxx.com.crt拷贝到/etc/pki/ca-trust/source/anchors/reg.你的域名.crt,然后需要执行命令update-ca-trust,最后重启harbor和docker即可!
      ubunt16.04系统以上报错的原因是因为自签的证书没有加入到系统级别信任,只需要将harbor.xxx.com.crt拷贝到/usr/local/share/ca-certificates/reg.你的域名.crt,然后执行命令update-ca-certificates,最后重启harbor和docker即可!
      /usr/share/ca-certificates/reg.你的域名.crt
      图形化配制 dpkg-reconfigure ca-certificates
      client:
      确认证书是 crt 结尾的,不是按照如下命令转换
      $ openssl x509 -inform PEM -in root-ca.cer -out root-ca.crt
      拷贝证书文件到 /usr/local/share/ca-certificates
      $ sudo cp root-ca.crt /usr/local/share/ca-certificates/
      修改ca 配置文件
      编辑 /etc/ca-certificates.conf。文件最后加入 ‘root-ca.crt’。里面文件的位置是相对 /usr/local/share/ca-certificates/
      更新本机的ca 文件
      $ sudo update-ca-certificates
      Mac OS X
      添加证书:
      sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/new-root-certificate.crt
      移除证书:
      sudo security delete-certificate -c “”
  • Error response from daemon: Get https://192.168.88.88/v2/: dial tcp 192.168.88.88:443: connect: connection refused
    在docker启动文件中添加–insecure-registry信任关系!
    cat /usr/lib/systemd/system/docker.service -> –insecure-registry=harbor仓库IP地址+端口号
    修改docker客户端配置/etc/default/docker
    备注:增加harbor私有仓库地址,告知客户端要连接http的端口
    DOCKER_OPTS=”–selinux-enabled –log-driver=journald –signature-verification=false –insecure-registry=192.168.88.98″
    Server DOCKER_OPTS=”–insecure-registry 192.168.88.98″
    vi /etc/systemd/system/multi-user.target.wants/docker.service
    ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS
  • denied: requested access to the resource is denied
    vi /etc/docker/daemon.json
    {
    "insecure-registries":["192.168.88.98:5000"],
    "registry-mirrors":["https://cuzn52f3.mirror.aliyuncs.com","https://registry.docker-cn.com","https://reg-mirror.qiniu.com"],
    "exec-opts": ["native.cgroupdriver=systemd"]
    }
    vi /etc/default/docker
    DOCKER_OPTS="--insecure-registry 192.168.88.98"
    vi /etc/systemd/system/multi-user.target.wants/docker.service
    可以在systemctl status docker 中查看具体配制文件路径
    ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS

    删除证书
    $sudo rm -f /usr/local/share/ca-certificates/xinmu.crt
    $sudo update-ca-certificates
    或编辑 /etc/ca-certificates.conf 文件,把证书对应的行删除或注释掉。然后用命令 update-ca-certificates 使之生效。

    1. FYI
      (https://blog.51cto.com/13043516/2287267)
      (http://blog.itpub.net/28624388/viewspace-2153546/)

Registry 私有仓库

docker pull registry

docker run -itd –name my_registry -p 5000:5000 -v /opt/registry_images:/var/lib/registry registry:2.7.1

vim /etc/docker/daemon.json

增加自己的仓库

{
“insecure-registries”:[“192.168.88.128:5000”],
“registry-mirrors”:[“https://cuzn52fX.mirror.aliyuncs.com”,”https://registry.docker-cn.com”,”https://reg-mirror.qiniu.com”],
“exec-opts”: [“native.cgroupdriver=systemd”]
}

systemctl daemon-reload
systemctl restart docker
Copy到其它机器
scp /etc/docker/daemon.json 192.168.0.28:/etc/docker

查看仓库中的镜像信息
curl http://192.168.88.88:5000/v2/_catalog
{“repositories”:[“coreos/flannel”,”rabbitmq”]}
curl http://192.168.88.88:5000/v2/rabbitmq/tags/list
{“name”:”rabbitmq”,”tags”:[“3-management”]}