docker私有仓库harbor

2018-10-20  本文已影响74人  王小杰at2019

[toc]

证书

  1. 生成自己的证书

在线方式

https://csr.chinassl.net/generator-csr.html

本机方式

#首先确保机器上安装了openssl和openssl-devel

yum install -y openssl-devel openssl

# 创建服务器私钥,命令会让你输入一个口令:
openssl genrsa -des3 -out server.key 1024

创建签名请求的证书(CSR):
# openssl req -new -key server.key -out server.csr
 

  1. 签发证书
#在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:
 cp server.key server.key.org
 openssl rsa -in server.key.org -out server.key
#最后标记证书使用上述私钥和CSR:
 openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

  1. 证书信任

CentOS 7

添加到信任链中,需要重新docker

#转换格式

openssl x509 -inform der -in  hub.g.cn.cer -out hub.g.cn.pem

cat hub.g.cn.pem  >> /etc/pki/tls/certs/ca-bundle.crt

harbor

  1. 下载
wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.6.1.tgz
tar -xvf  harbor-offline-installer-v1.6.1.tgz
  1. 配置
    harbor.cfg

#改成自己的
hostname = hub.g.cn

ui_url_protocol = https

#off
customize_crt = off

#用自己的
ssl_cert = /data/nginx/conf/certificate/hub/hub.g.cn.crt
ssl_cert_key = /data/nginx/conf/certificate/hub/hub.g.cn.key

  1. 脚本说明
#加载镜像
install.sh

#根据harbor.cfg初始化配置
prepare

#启动容器
docker-compose up -d

默认用户名密码admin/Harbor12345

  1. 添加用户,添加项目,添加用户到项目

docker操作

#登陆
docker login -u wyj -p Wyj12345 hub.g.cn

#修改标签
docker tag 25068d1677ff hub.g.cn/gaiay/tomcat:jre7

#push

docker push hub.g.cn/gaiay/tomcat:jre7

#pull

docker pull hub.g.cn/gaiay/tomcat:jre7

nginx 代理

修改 docker-compose.yml 端口映射

180:80
1443:443
server {
    server_name  hub.g.cn;
    listen 443 ssl ;
    ssl_certificate     /data/nginx/conf/certificate/hub/hub.g.cn.crt;
    ssl_certificate_key /data/nginx/conf/certificate/hub/hub.g.cn.key;
    ssl_session_timeout  20m;
    ssl_protocols  TLSv1  TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers EECDH+AES:EECDH+CHACHA20;
    add_header X-Frame-Options SAMEORIGIN;


location / {
    #docker 代理一定要配置 max_body_size
    client_max_body_size 1000m;
    proxy_pass   https://192.168.0.180:1443;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_set_header   X-Forwarded-Port $server_port;
    proxy_redirect off;

    }
}


遇到的坑

用域名用自己证书,因为容器组合起来的,
hostname = hub.g.cn
ui_url_protocol = https
必须是在容器内外都可以访问的,修改映射端口后,如果还使用nginx配置代理,那么harbor.cfg hotname还是用标准端口号就可以了

上一篇 下一篇

猜你喜欢

热点阅读