文章目录
- 一、简介
- 二、部署(服务端)
- 三、镜像管理(客户端)
- 四、给 harbor 配置 https 证书
- 4.1 配置后的效果
- 4.2 服务端配置
- 4.3 客户端配置
一、简介
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署企业内部的私有环境Registry是非常必要的,Harbor和docker中央仓库的关系,就类似于nexus和Maven中央仓库的关系,Harbor除了存储和分发镜像外还具有用户管理,项目管理,配置管理和日志查询,高可用部署等主要功能。
二、部署(服务端)
部署文档参考:https://goharbor.io/docs/2.6.0/install-config/
- step1 获取资源包
harbor:https://github.com/goharbor/harbor/tags docker-compose:https://github.com/docker/compose/tags docker-compose(国内):https://mirrors.aliyun.com/docker-toolbox/linux/compose/ - step2 根据官方文档安装所需依赖程序(对版本有需求)
# 安装docker
# 1. 安装
yum -y install docker-io
systemctl start docker
systemctl enable docker
# 2. 验证
[root@jumper ~]# docker -v
Docker version 19.03.14, build 5eb3275d40
# 安装docker-compose
# 1.下载二进制命令的同时重命名
curl -L https://mirrors.aliyun.com/docker-toolbox/linux/compose/1.21.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 2. 配置权限
chmod 777 /usr/local/bin/docker-compose
# 3. 验证
[root@jumper ~]# docker-compose -v
docker-compose version 1.21.2, build a133471
# 安装openssh(用于为Harbor生成证书和密钥)
yum -y install openssh
- step3 部署 harbor
# 1. 下载部署包
wget https://github.com/goharbor/harbor/releases/download/v1.5.1/harbor-offline-installer-v1.5.1.tgz
# 2. 解压
tar xf harbor-offline-installer-v1.5.1.tgz
# 3. 变更仓库地址、初始密码
sed -i \
-e 's/hostname = reg.mydomain.com/hostname = 192.168.56.10/g' \
-e 's/harbor_admin_password = Harbor12345/harbor_admin_password = 123456/g' \
harbor/harbor.cfg
# 4. 安装harbor
./install.sh
- step4 验证成果
浏览器访问:http://192.168.56.10
三、镜像管理(客户端)
- step1 创建项目
- step2 信任私有仓库(下面的操作会覆盖原有配置,非新环境慎用)
cat > /etc/docker/daemon.json <<EOF
{
"insecure-registries": ["http://192.168.56.10"]
}
EOF
systemctl restart docker
- step3 登录 harbor 通过认证
[root@jumper harbor]# docker login http://192.168.56.10
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[root@jumper harbor]# cat ~/.docker/config.json
{
"auths": {
"192.168.56.10": {
"auth": "YWRtaW46MTIzNDU2"
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/19.03.14 (linux)"
}
}
- step4 给镜像打上新建的项目标签,并推送/拉取镜像
docker tag nginx 192.168.56.10/lyh/nginx:1.12
docker push/pull 192.168.56.10/lyh/nginx:1.12
四、给 harbor 配置 https 证书
4.1 配置后的效果
1)加密传输更安全
2)传输镜像时,不需要再在 /etc/docker/daemon.json 里面添加 insecure-registries
4.2 服务端配置
step1:准备证书
https 自签名证书参考:
# 准备证书存放目录
ls /data/cert
ca.crt ca.csr ca.key ca.srl harbor.local.crt harbor.local.csr harbor.local.key
step2:修改配置文件
# 进入部署包目录
cd /harbor
# 变更仓库地址、传输协议、证书存放的路径
sed -i \
-e 's#hostname = reg.mydomain.com#hostname = harbor.local#' \
-e 's#ui_url_protocol = http#ui_url_protocol = https#' \
-e 's#ssl_cert = /data/cert/server.crt#ssl_cert = /data/cert/harbor.local.crt#' \
-e 's#ssl_cert_key = /data/cert/server.key#ssl_cert_key = /data/cert/harbor.local.key#' \
harbor.cfg
step3:跳过镜像导入步骤,加快部署(前面没导入过镜像的,可以跳过该步骤)
# 注释镜像导入
sed -i '151,155s/^/#/' install.sh
# 注释代码
sed -n 151,155p install.sh
#if [ -f harbor*.tar.gz ]
#then
# h2 "[Step $item]: loading Harbor images ..."; let item+=1
# docker load -i ./harbor*.tar.gz
#fi
step4:应用配置
./install
step5:验证效果(解析问题就不说了)
1)通过https协议访问
2)原先上传的镜像不会丢失
3)无需在 daemon.json 中添加信任
4.3 客户端配置
把自生成的证书放入 Docker 配置文件中,原因是自生成的证书不被 Docker 认可,不处理的话 login 会报错:Error response from daemon: Get “https://IP/v2/”: x509: certificate relies on legacy Common Name field, use SANs instead.
# 在docker配置文件中建立自己IP或域名的文件夹
mkdir /etc/docker/cert.d/IP(或者域名)
# 示例
mkdir /etc/docker/cert.d/harbor.local
# 将证书复制进入
cp /data/cert/harbor.local.crt /etc/docker/cert.d/harbor.local/
# 重启docker
systemctl restart docker