创建 Harbor
1. 访问 GitHub 上的 harbor 项目
https://github.com/goharbor/harbor
2. 下载版本, 比如 1.10.0
https://github.com/goharbor/harbor/releases
3. 上传并解压
tar -zxvf harbor-offline-installer-v1.10.0.tgz
4. 修改 harbor.YAML 文件
VIM harbor.YAML
注意: YAML 必须在冒号后面加空格
- hostname: 192.168.1.14
- ui_url_protocol: https
- # https related config
- https:
- # https port for harbor, default is 443
- port: 443
- # The path of cert and key files for nginx
- certificate: /data/cert/ca.crt(你自己的证书地址)
- private_key: /data/cert/ca.key(你自己的私钥地址)
5. 执行./prepare
6. 执行./install.sh
7. 浏览器访问, 比如 192.168.1.14, 输入用户名和密码即可 (admin/Harbor12345)
生成证书方式:
1. 创建证书存放目录
mkdir -p /data/cert && cd /data/cert
2. 创建自己的 CA 证书 (不使用第三方权威机构的 CA 来认证, 自己充当 CA 的角色)
openssl genrsa -out ca.key 2048 #生成根证书私钥 (无加密)
3. 生成自签名证书 (使用已有私钥 ca.key 自行签发根证书)
openssl req -x509 -new -nodes -key ca.key -days 10000 -out ca.crt -subj "/CN=Harbor-ca"
req 产生证书签发申请命令
-x509 签发 X.509 格式证书命令. X.509 是最通用的一种签名证书格式.
-new 生成证书请求
-key 指定私钥文件
-nodes 表示私钥不加密
-out 输出
-subj 指定用户信息
-days 有效期
4. 生成服务器端私钥和 CSR 签名请求
openssl req -newkey rsa:4096 -nodes -sha256 -keyout server.key -out server.csr
一路回车...
5. 签发服务器证书
- echo subjectAltName = IP:192.168.1.14> extfile.cnf
- openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 365 -extfile extfile.cnf -out server.crt
x509 签发 X.509 格式证书命令.
-req 表示证书输入请求.
-days 表示有效天数
-extensions 表示按 OpenSSL 配置文件 v3_req 项添加扩展.
-CA 表示 CA 证书, 这里为 ca.crt
-CAkey 表示 CA 证书密钥, 这里为 ca.key
-CAcreateserial 表示创建 CA 证书序列号
-extfile 指定文件
6. 设置 docker 证书
- # 如果如下目录不存在, 请创建, 如果有域名请按此格式依次创建
- mkdir -p /etc/docker/certs.d/192.168.1.14
- # mkdir -p /etc/docker/certs.d/[IP2]
- # mkdir -p /etc/docker/certs.d/[example1.com]
- # 如果端口为 443, 则不需要指定. 如果为自定义端口, 请指定端口
- # /etc/docker/certs.d/yourdomain.com:port
- # 将 ca 根证书依次复制到上述创建的目录中
- cp ca.crt /etc/docker/certs.d/192.168.1.14
PS: 设置证书的方式解决 https 的 ssl 证书问题
最终效果:
扩展 (上传 docker 镜像)
1, 登录
docker login http://192.168.1.14:80 http://192.168.1.14/
2, 登录私有 hub 创建项目
例如项目叫: test
2, 给镜像打 tag(这里以 MySQL 镜像为例)
docker tag MySQL 192.168.1.14:80/test/MySQL:1.0
MySQL: 镜像名称, 可以用 docker images 查看
192.168.1.14:80: 私有 hub 域名
test: 项目名称
MySQL: 镜像名称
1.0: 镜像版本号
4, 推送
- docker push 192.168.1.14:80/test/MySQL:1.0
来源: http://www.bubuko.com/infodetail-3333379.html