zoukankan      html  css  js  c++  java
  • ubuntu 14.04 https 形式安装docker 私有库 harbor

    起始目录/root,root 登陆后,直接在该目录进行下面的命令

    下载harbor 预编译包 0.4.5

    准备通过域名 reg.server.com 来访问镜像库所以需要在/etc/hosts 文件中加入 192.168.10.90 reg.server.com, IP 镜像服务器的地址。

    1 生成 CA 证书(注意内容不能乱填)

    openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt

    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]:CN
    State or Province Name (full name) [Some-State]:beijing
    Locality Name (eg, city) []:beijing
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:reg.server.com
    Organizational Unit Name (eg, section) []:reg.server.com
    Common Name (e.g. server FQDN or YOUR name) []:reg.server.com # 这里最重要,一定要填写你准备使用的域名
    Email Address []:admin@reg.server.com

    命令完成后生成ca.crt, ca.key文件

    2 然后生成CA 签名,注意文件名称要与你的域名匹配

     openssl req -newkey rsa:4096 -nodes -sha256 -keyout reg.server.com.key -out reg.server.com.csr

    输入的内容如下

    writing new private key to 'reg.server.com.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]:CN
    State or Province Name (full name) [Some-State]:beijing
    Locality Name (eg, city) []:beijing
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:reg.server.com
    Organizational Unit Name (eg, section) []:reg.server.com
    Common Name (e.g. server FQDN or YOUR name) []:reg.server.com # 必须和域名一致
    Email Address []:admin@reg.server.com


    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:    #密码留空即可
    An optional company name []:

    命令完成后生成 

    reg.server.com.key 和 reg.server.com.csr

    3 生成证书

    可以查看/etc/ssl/openssl.cnf 配置文件中 ssl 默认的文件夹名称是什么,一般来说,没被改动过的话是demoCA.

     3.1 创建文件夹和辅助内容

     mkdir demoCA
      cd demoCA
      touch index.txt
      echo '01' > serial
      cd ..

     3.2 签名证书

           因为我们生成签名的时候使用的是FQDN 所以需要如下命令

    echo subjectAltName = IP:192.168.10.90 > extfile.cnf
    openssl ca -in reg.server.com.csr -out reg.server.com.crt -cert ca.crt -keyfile ca.key -extfile extfile.cnf -outdir .

     3.3 讲生成的证书加入本机信任

         运行3.2 的命令之后,会生成一个01.pem 和 reg.server.com.crt的证书。

    cat 01.pem >> reg.server.com.crt
    cp ca.crt reg.server.com.crt /usr/local/share/ca-certificates/
    
    update-ca-certificates 
    

    4 安装Docker(如果在导入信任证书前安装了docker, 需要重启docker,命令为 service docker restart

    安装方法参见

    https://docs.docker.com/engine/installation/Linux/ubuntulinux/

    5 安装docker compose

    安装方法参见

    https://docs.docker.com/compose/install/

    如果遇到伟大的长城问题。

    可以直接爬墙把docker-compose-Linux-x64 文件下载下来。然后chmod +x 就可以了,然后在把这个文件改名为docker-compose 复制到/usr/local/bin 下,就算安装完成。

    6 配置harbor

    解压安装包

    tar -zxvf harbor-offline-installer-0.4.5.tgz

    修改 harbor.cfg 文件为

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. ## Configuration file of Harbor  
    2.   
    3. #The IP address or hostname to access admin UI and registry service.  
    4. #DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.  
    5. hostname = reg.server.com #必须和签名时的域名一致  
    6.   
    7. #The protocol for accessing the UI and token/notification service, by default it is http.  
    8. #It can be set to https if ssl is enabled on nginx.  
    9. ui_url_protocol = https      
    10.   
    11. #Email account settings for sending out password resetting emails.  
    12. email_server = smtp.mydomain.com  
    13. email_server_port = 25  
    14. email_username = sample_admin@mydomain.com  
    15. email_password = abc  
    16. email_from = admin <sample_admin@mydomain.com>  
    17. email_ssl = false  
    18.   
    19. ##The initial password of Harbor admin, only works for the first time when Harbor starts.   
    20. #It has no effect after the first launch of Harbor.  
    21. #Change the admin password from UI after launching Harbor.  
    22. harbor_admin_password = Harbor12345   #密码可以随便改  
    23.   
    24. ##By default the auth mode is db_auth, i.e. the credentials are stored in a local database.  
    25. #Set it to ldap_auth if you want to verify a user's credentials against an LDAP server.  
    26. auth_mode = db_auth  
    27.   
    28. #The url for an ldap endpoint.  
    29. ldap_url = ldaps://ldap.mydomain.com  
    30.   
    31. #A user's DN who has the permission to search the LDAP/AD server.   
    32. #If your LDAP/AD server does not support anonymous search, you should configure this DN and ldap_search_pwd.  
    33. #ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com  
    34.   
    35. #the password of the ldap_searchdn  
    36. #ldap_search_pwd = password  
    37.   
    38. #The base DN from which to look up a user in LDAP/AD  
    39. ldap_basedn = ou=people,dc=mydomain,dc=com  
    40.   
    41. #Search filter for LDAP/AD, make sure the syntax of the filter is correct.  
    42. #ldap_filter = (objectClass=person)  
    43.   
    44. # The attribute used in a search to match a user, it could be uid, cn, email, sAMAccountName or other attributes depending on your LDAP/AD    
    45. ldap_uid = uid   
    46.   
    47. #the scope to search for users, 1-LDAP_SCOPE_BASE, 2-LDAP_SCOPE_ONELEVEL, 3-LDAP_SCOPE_SUBTREE  
    48. ldap_scope = 3   
    49.   
    50. #The password for the root user of mysql db, change this before any production use.  
    51. db_password = root123  
    52.   
    53. #Turn on or off the self-registration feature  
    54. self_registration = on  
    55.   
    56. #Determine whether the UI should use compressed js files.   
    57. #For production, set it to on. For development, set it to off.  
    58. use_compressed_js = on  
    59.   
    60. #Maximum number of job workers in job service    
    61. max_job_workers = 3   
    62.   
    63. #The expiration time (in minute) of token created by token service, default is 30 minutes  
    64. token_expiration = 30  
    65.   
    66. #Determine whether the job service should verify the ssl cert when it connects to a remote registry.  
    67. #Set this flag to off when the remote registry uses a self-signed or untrusted certificate.  
    68. verify_remote_cert = on  
    69.   
    70. #Determine whether or not to generate certificate for the registry's token.  
    71. #If the value is on, the prepare script creates new root cert and private key   
    72. #for generating token to access the registry. If the value is off, a key/certificate must   
    73. #be supplied for token generation.  
    74. customize_crt = on  
    75.   
    76. #Information of your organization for certificate  
    77. crt_country = CN  
    78. crt_state = State  
    79. crt_location = CN  
    80. crt_organization = organization  
    81. crt_organizationalunit = organizational unit  
    82. crt_commonname = example.com  
    83. crt_email = example@example.com  
    84.   
    85.   
    86. #The path of cert and key files for nginx, they are applied only the protocol is set to https  
    87. ssl_cert = /etc/nginx/cert/reg.server.com.crt       #文件位置不能变,必须是这个位置  
    88. ssl_cert_key = /etc/nginx/cert/reg.server.com.key   #文件位置不能变,必须是这个位置  

    修改prepare 源码(此步骤 仅仅在 ubuntu 16 中才需要执行)

    vim /root/harbor/prepare 在第46 行不兼容python 3.5, ubuntu 16 默认时使用的python 3.5

    将原来的 os.makedirs(path, mode=0600) 改为 os.makedirs(path, mode=0o600)  不然会报错。

    备份 nginx 配置文件

    mv /root/harbor/common/config/nginx/nginx.conf /root/harbor/common/config/nginx/nginx.conf.bak

    拷贝 https 的配置文件到 /root/harbor/common/config/nginx/

    cp /root/harbor/common/templates/nginx/nginx.https.conf /root/harbor/common/config/nginx/nginx.conf

    拷贝证书

    cp reg.server.com.crt reg.server.com.key /etc/nginx/cert/ (如果文件夹不存在,手动创建)

    cp reg.server.com.crt reg.server.com.key /root/harbor/common/config/nginx/cert/

    安装harbore

    cd /root/harbor

    ./install.sh

    安装完成后运行

    docker ps 查看启动的容器,一共有6个

    docker login reg.server.com (输入用户名密码,如果能成功登陆就成功 了)

    过程中遇到的问题

    x509: certificate signed by unknown authority

    如果遇到这个问题,就是ca.crt 没有导入到本机信任列表中,运行下面命令解决

    cp ca.crt /usr/local/share/ca-certificates/
    
    update-ca-certificates 

    参考文档

    https://github.com/vmware/harbor/blob/master/docs/configure_https.md

    https://mritd.me/2016/09/15/Harbor-%E4%BC%81%E4%B8%9A%E7%BA%A7-Docker-Registry-%E7%AC%AC%E4%BA%8C%E5%BC%B9/

  • 相关阅读:
    【洛谷P1330】封锁阳光大学
    【洛谷P1087】FBI树
    hdu 4504(动态规划)
    hdu 4503(数学,概率)
    hdu 5400(思路题)
    hdu 5701(区间查询思路题)
    hdu 4502(DP)
    hdu 1401(单广各种卡的搜索题||双广秒速)
    hdu 1258(DFS)
    hdu 1254(搜索题)
  • 原文地址:https://www.cnblogs.com/yudar/p/6047303.html
Copyright © 2011-2022 走看看