私有镜像仓库harbor之手把手搭建步骤 --(安装成功)
私有镜像仓库harbor之手把手搭建步骤
Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境的Registry也是非常必要的。 之前我是一直使用的是阿里云提供仓库,这个是免费的,也是挺好用的,但对仓库的数量是有限制的,无法进行企业化的管理,所以这里我们采用Harbor搭建一个属于自己的docker的镜像管理仓库。
HarborHarbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能,具有web管理功能,操作其实是非常简单易行的。Harbor是一个基于Apache协议的开源软件,主要开发语言为go,项目地址 https://github.com/goharbor/harbor
实验目标手把手构建出一个企业级的docker仓库存放自己私有的docker镜像
一、实验环境说明
主机OS:centos7.8二、安装 Docker
2.1.安装docker-ce参考https://mp.weixin.qq.com/s/4rwI5RegCkhNkBZJR25kFQ2.2.docker --version
2.3.开启镜像加速vi /etc/docker/daemon.json
2.4.系统参数配置
三、安装docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
要安装其他版本的 Compose,请替换 1.24.1。
将可执行权限应用于二进制文件:
$ sudo chmod +x /usr/local/bin/docker-compose
创建软链:
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功:
$ docker-compose --version
cker-compose version 1.24.1, build 4667896b
四、下载harbor
curl -O https://github.com/goharbor/harbor/releases/download/v2.8.2/harbor-offline-installer-v2.8.2.tgz下载harbor
官方地址:
https://github.com/goharbor/harbor/releases
国内代理 地址 (速度挺快):
wget https://ghproxy.com/https://github.com/goharbor/harbor/releases/download/v2.5.3/harbor-offline-installer-v2.5.3.tgz
tar -xvf harbor-offline-installer-v2.8.2.tgz -C /opt
五、配置Harbor参数
cd /opt/harbor
六、配置证书
6.1. 生成CA证书
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 365\0 -subj "/C=CN/ST=jiangsu/L=suzhou/O=amber/OU=Personal/CN=amber.com" -key ca.key -out ca.crt
6.2. 生成服务器证书
6.3. 生成harbor仓库主机的证书
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=amber.com
DNS.2=harbor
IP.1=192.168.56.110
EOF
openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in amber.com.csr -out amber.com.crt
七、安装harbor服务
./install.sh……
安装注意事项:产生的密钥和证书名称是cert 后缀结尾的,还是crt后缀结尾的,否则安装找不到文件
安装成功::::
[root@harbor harbor]# vi /etc/docker/daemon.json [root@harbor harbor]# [root@harbor harbor]# more /etc/docker/daemon.json { "insecure-registries": ["192.168.56.110"], "registry-mirrors": [ "https://049ghlkj.mirror.aliyuncs.com", "https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn" ], "exec-opts": ["native.cgroupdriver=systemd"], "live-restore": true, "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file":"3" } }
八、登录harbor
docker login x.x.x.x:80 # 请替换 x.x.x.x 为 harbor 公网 IP
系统模块简单介绍: 项目:新增/删除项目,查看镜像仓库,给项目添加成员、查看操作日志、复制项目等 日志:仓库各个镜像create、push、pull等操作日志 系统管理 用户管理:新增/删除用户、设置管理员等 复制管理:新增/删除从库目标、新建/删除/启停复制规则等 配置管理:认证模式、复制、邮箱设置、系统设置等 其他设置 用户设置:修改用户名、邮箱、名称信息 修改密码:修改用户密码 注意:非系统管理员用户登录,只能看到有权限的项目和日志,其他模块不可见。
界面如下:
九、操作指南
在目录 /opt/harbor 下备注:当有编辑/变更harbor.yml文件,请重新执行 ./prepare
十、docker login异常
10.1. login报错unknown authority解决办法[root@harbor harbor]# docker login -u admin 192.168.56.110Password:WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded[root@harbor harbor]#[root@harbor harbor]# docker login -u admin amber.comPassword:Error response from daemon: Get "https://amber.com/v2/": tls: failed to verify certificate: x509: certificate signed by unknown authority[root@harbor harbor]# mkdir -p /etc/docker/certs.d/amber.com/[root@harbor harbor]# mkdir -p /etc/docker/certs.d/192.168.56.110/[root@harbor harbor]# cp certs/ca.crt /etc/docker/certs.d/amber.com/[root@harbor harbor]# cp certs/ca.crt /etc/docker/certs.d/192.168.56.110/[root@harbor harbor]# docker login -u admin amber.comPassword:WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded[root@harbor harbor]#10.2. login报错connection refused解决办法[root@harbor harbor]#[root@harbor harbor]# docker login -u admin 192.168.56.110Password:Error response from daemon: Get "http://192.168.56.110/v2/": dial tcp 192.168.56.110:80: connect: connection refused[root@harbor harbor]#
解决方法:vi /lib/systemd/system/docker.service白色部分换成自己镜像仓库IP (重点:镜像仓库IP换成你自己的。)
保存重启:systemctl daemon-reloadsystemctl restart docker然后继续login操作即可。
10.3. login报错contain any IP SANs解决办法 这个报错是我测试中遇到的最多的错误。 x509: cannot validate certificate for 192.168.121.100 because it doesn't contain any IP SANs 这个是因为在生成证书的时候,要么是域名,要么是IP,导致login ip的时候会报此错误。