docker harbor

前提须知:安装docker环境和docker-compose环境。

创建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.yml文件

**vim harbor.yml**

注意:yml必须在冒号后面加空格

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

2、登录私有hub创建项目
例如项目叫:test

3、给镜像打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
posted @ 2019-12-15 21:26  snail灬  阅读(880)  评论(0编辑  收藏  举报