harbor与docker的配置

安装harbor之前要完成docker、docker-compose、Python的安装。

安装docker

https://blog.csdn.net/qq_26624661/article/details/79565735
如果只能打开cilent不能打开server,则参考:
https://www.cnblogs.com/informatics/p/8276172.html

安装openssl

ubuntu系统应该自带,可以用openssl version查看版本

安装docker-compose与harbor

https://www.jianshu.com/p/6ef321f25c16
这里要修改harbor.yml文件,只需要需改hostname就行了,其余继续用默认的
查看自己电脑ip:ifconfig
如果安装harbor时提示permission denied,那么需要sudo一下
到这里,已经能够登录harbor了,在浏览器输入http://xxx.xxx.xxx(你在harbor.yml)中设置的hostname,可以发现进入了harbor登录界面。
从上面也可以看到,我们使用的是http登录方式。(不信可以将http改为https,看能不能登上去)

配置harbor以支持https连接

  1. 使用openssl制作证书harbor与docker的配置_第1张图片中间的所有提示的输入信息感觉都可以忽略,直接一路回车
    引用别人的一个解释介绍:
    Country Name (2 letter code) [AU]:CN ← 国家名称,中国输入CN
    State or Province Name (full name) [Some-State]:BeiJing ← 省名,拼音
    Locality Name (eg, city) []:BeiJing ← 市名,拼音
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. ← 公司英文名
    Organizational Unit Name (eg, section) []: ← 可以不输入
    Common Name (eg, YOUR name) []:www.mycompany.com ← 服务器主机名,若填写不正确,浏览器会报告证书无效,但并不影响使用
    Email Address []:[email protected] ← 电子邮箱,可随便填

主要流程:

  1. 创建自己的CA证书 生成.key 与. crt文件,命名随意
  2. 生成证书签名请求,生成.key 与 .csr文件 如果使用FQDN作为注册主机,则命名有讲究,否则命名随意
  3. 生成注册表主机的证书,生成.crt文件
    这一步需要用第1步中的CA证书(key文件与crt文件)与第2步红的csr文件
  4. 把第2步生成的key与3步生成的crt单独放在一个文件(便于第5步的寻找)
  5. 修改harbor.yml文件,将http部分注释掉,把htps部分的相应注释去掉。https位于句首,port,certificate(crt路径),private_key(key路径)三条句子缩进一次。
  6. 生成配置文件
  7. 停止运行harbor
  8. 重启harbor,即可用https连接
    可参考的博客:
    https://blog.csdn.net/ccy19910925/article/details/80271207
    需要注意的是生成证书的流程,建议和下面这篇博客的生成证书的流程比对一下:
    https://blog.csdn.net/nickDaDa/article/details/87615607
    (这篇博客的证书生成流程适用于通过域名连接harbor)
    harbor使用docker-compose管理,因此harbor的启动,关闭与重启都是在harbor目录执行

需要说明的问题

经过上述操作之后,可以通过https在浏览器中连接harbor,但是在终端使用docker pull拉取本地仓库镜像的时候还是有很多问题的。
可以自己测试一下是不是有问题。
从官方仓库拉取一个镜像:
docker pull hello-world 这样就将官网的镜像拉取到了本地
通过docker tag 将镜像重新命名,使之与本地的harbor仓库相配:
比如:docker tag hello-world xxx.xxx.xxx.xxx/test_tc/hello-world
登录自己的本地仓库:docker login xxx.xxx.xxx.xxx
然后将自己的镜像push上去 docker push hello-world xxx.xxx.xxx.xxx/test_tc/hello-world
中间可能会出现的问题:

  • 问题1:x509: cannot validate certificate because of not containing any IP SANs
    可以看一下小科普:
    https://www.cnblogs.com/guogangj/p/4118605.html(看完你也解决不了问题)
    问题是证书不包含你的仓库的ip,这时候就要返回去看配置harnor的https连接这一部分了,用FQDN来连接注册主机的时候,有这么一个选项Common Name (e.g. server FQDN or YOUR name) [],这里需要你填写自己的FQDN,这样才能让你的证书包含你的IP
  • 问题2:使用FQDN注册主机,那么push的时候会说没有权限如接入该仓库
    这是因为它把你的FQDN当成了默认的官方仓库下的一个目录了
    我直接使用了ip地址,而不是使用FQDN来连接,这样就没有这个问题了
    非要使用FQDN的话或许可以先login一下本地仓库,不过我没有尝试过
    (后面会有彩蛋)
  • 问题3 :x509: certificate signed by unknown authority
    这个问题是我在解决了前两个之后遇到的新问题。
    需要将自己生成的证书添加到系统的信任证书列表,参考博客:
    https://www.cnblogs.com/jiaoyiping/p/6629442.html
    不过添加之后任然不能push,不过用谷歌浏览器打开harbor不提示有风险了,说明我们添加信任成功,并且谷歌浏览器是直接读取的系统信任证书列表,但是火狐浏览器还会提示有风险,我们可以手动添加该证书到火狐的信任列表
    再通过sudo cp xxx.crt /usr/share/ca-certificates/mozilla/ 把证书添加到火狐的信任列表,火狐也搞定了
    https://blog.csdn.net/nickDaDa/article/details/87615607
    然而问题并没有解决(如果你的问题解决了,就不需要继续看下去了)
    经过多次尝试,和领导的建议,我还是放弃了用ip登录的方式,采用域名登录(FQDN)(就是之前的问题2中曾被我放弃了的方式)。
    按照之前推荐的博客(https://blog.csdn.net/nickDaDa/article/details/87615607)
    中的生成证书的相关部分完成之后,根据需要修改自己的harbor.yml文件,之后继续按照
    https://blog.csdn.net/ccy19910925/article/details/80271207
    中的流程,生成配置文件,关闭harbor,重启harbor
    之后又要回到 https://blog.csdn.net/nickDaDa/article/details/87615607
  1. vim /etc/hosts配置一下hosts
  2. 将自己的证书文件.crt拷贝到 /usr/share/ca-certificates
  3. update-ca-certificates
  4. 检查docker能够登录 dockor login 你的域名(例如tongchen.com)
  5. 如果不行,应该是 update-ca-certificates 功能出了问题,按照上面博客中从
    sudo dpkg-reconfigure ca-certificates开始到重新更新配置病重启 这部分操作做一遍即可
  6. 再次检查docker login 能否成功,成功之后就可以快乐地 tag 和 push了

解决这些问题一共花了两天,感觉还行。

你可能感兴趣的:(c++)