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/

  • 相关阅读:
    DEDECMS里面DEDE函数解析
    dede数据库类使用方法 $dsql
    DEDE数据库语句 DEDESQL命令批量替换 SQL执行语句
    织梦DedeCms网站更换域名后文章图片路径批量修改
    DSP using MATLAB 示例 Example3.12
    DSP using MATLAB 示例 Example3.11
    DSP using MATLAB 示例 Example3.10
    DSP using MATLAB 示例Example3.9
    DSP using MATLAB 示例Example3.8
    DSP using MATLAB 示例Example3.7
  • 原文地址:https://www.cnblogs.com/yudar/p/6047303.html
Copyright © 2011-2022 走看看