{"id":69042,"date":"2026-01-31T03:09:14","date_gmt":"2026-01-30T19:09:14","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/69042.html"},"modified":"2026-01-31T03:09:14","modified_gmt":"2026-01-30T19:09:14","slug":"harbor-v2-14-0%e9%ab%98%e5%8f%af%e7%94%a8%e9%83%a8%e7%bd%b2%e5%9f%ba%e4%ba%8eubuntu22-04","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/69042.html","title":{"rendered":"harbor-v2.14.0\u9ad8\u53ef\u7528\u90e8\u7f72\u57fa\u4e8eUbuntu22.04"},"content":{"rendered":"<p>harbor\u662fVMware\u516c\u53f8\u5f00\u6e90\u7684\u4e00\u6b3e\u4f01\u4e1a\u7ea7\u955c\u50cf\u4ed3\u5e93&#xff0c;\u5e95\u5c42\u57fa\u4e8edocker-compose\u6765\u7ba1\u7406harbor\u670d\u52a1 docker\u7684\u79c1\u6709\u4ed3\u5e93\u7528\u8d77\u6765\u592a\u9ebb\u70e6\u6211\u4eec\u4f7f\u7528harbor\u6765\u7ba1\u7406\u955c\u50cf \u63a5\u4e0b\u6765\u5b66\u4e60\u4e00\u4e0b\u5982\u4f55\u642d\u5efa\u90e8\u7f72\u4e00\u4e2a\u9ad8\u53ef\u7528\u4f01\u4e1a\u7ea7\u7684harbot\u79c1\u6709\u4ed3\u5e93\u7684\u90e8\u7f72\u8fc7\u7a0b \u6211\u7684\u7cfb\u7edf\u662fUbuntu22.04\u7248\u672c<\/p>\n<h4>harbor\u7684\u9ad8\u53ef\u7528\u90e8\u7f72<\/h4>\n<h5>1. \u4e0b\u8f7dharbor\u8f6f\u4ef6\u5305<\/h5>\n<p>wget https:\/\/github.com\/goharbor\/harbor\/releases\/download\/v2.14.0\/harbor-offline-installer-v2.14.0.tgz<\/p>\n<h5>2. \u89e3\u538b\u8f6f\u4ef6\u5305<\/h5>\n<p>tar xf harbor-offline-installer-v2.14.0.tgz -C \/usr\/local\/<\/p>\n<h5>3. \u4fee\u6539harbor\u7684\u914d\u7f6e\u6587\u4ef6<\/h5>\n<p>cd \/usr\/local\/harbor\/<br \/>\ncp harbor.yml{.tmpl,}<br \/>\nvim harbor.yml<br \/>\n&#8230;<br \/>\n#hostname: reg.mydomain.com<br \/>\nhostname: 10.0.250.4<br \/>\n# http related config<br \/>\nhttp:<br \/>\n  # port for http, default is 80. If https enabled, this port will redirect to https port<br \/>\n  port: 80<\/p>\n<p># https related config<br \/>\nhttps:   #\u53ef\u6ce8\u91ca<br \/>\n  #  # https port for harbor, default is 443<br \/>\n  port: 443     #\u53ef\u6ce8\u91ca<br \/>\n  #  # The path of cert and key files for nginx<br \/>\n  certificate:  \/etc\/aliyum\/aixxw\/aixxw.xin.pem     #\u53ef\u6ce8\u91ca<br \/>\n  private_key:  \/etc\/aliyum\/aixxw\/aixxw.xin.key    #\u53ef\u6ce8\u91ca<br \/>\n  # enable strong ssl ciphers (default: false)<br \/>\n  # strong_ssl_ciphers: false<br \/>\n&#8230;<br \/>\nharbor_admin_password: 123<br \/>\n&#8230;<br \/>\ndata_volume: \/var\/lib\/harbor<br \/>\n&#8230;<\/p>\n<p>\u63d0\u793a&#xff1a;<br \/>\n\u6ca1\u6709\u90e8\u7f72docker\u73af\u5883\u7684\u8bf7\u5148\u90e8\u7f72\u94fe\u63a5\u5982\u4e0b&#xff1a;https:\/\/blog.csdn.net\/weixin_45049740\/article\/details\/157514762?sharetype&#061;blogdetail&amp;sharerId&#061;157514762&amp;sharerefer&#061;PC&amp;sharesource&#061;weixin_45049740&amp;spm&#061;1011.2480.3001.8118<\/p>\n<h5>4. \u5b89\u88c5harbor\u670d\u52a1<\/h5>\n<p>[root&#064;master02 harbor]# .\/install.sh<\/p>\n<p>[Step 0]: checking if docker is installed &#8230;<\/p>\n<p>Note: docker version: 20.10.24<\/p>\n<p>[Step 1]: checking docker-compose is installed &#8230;<\/p>\n<p>Note: docker-compose version: 2.23.0<\/p>\n<p>[Step 2]: loading Harbor images &#8230;<br \/>\n5dd32317cf96: Loading layer  40.82MB\/40.82MB<br \/>\ne959dc37d186: Loading layer  16.49MB\/16.49MB<br \/>\n2cd016989b45: Loading layer  175.3MB\/175.3MB<br \/>\nc.yml<br \/>\nGenerated configuration file: \/config\/registryctl\/env<br \/>\nGenerated configuration file: \/config\/registryctl\/config.yml<br \/>\nGenerated configuration file: \/config\/db\/env<br \/>\nGenerated configuration file: \/config\/jobservice\/env<br \/>\nGenerated configuration file: \/config\/jobservice\/config.yml<br \/>\ncopy \/data\/secret\/tls\/harbor_internal_ca.crt to shared trust ca dir as name harbor_internal_ca.crt &#8230;<br \/>\nca file \/hostfs\/data\/secret\/tls\/harbor_internal_ca.crt is not exist<br \/>\ncopy  to shared trust ca dir as name storage_ca_bundle.crt &#8230;<br \/>\ncopy None to shared trust ca dir as name redis_tls_ca.crt &#8230;<br \/>\nGenerated and saved secret to file: \/data\/secret\/keys\/secretkey<br \/>\nSuccessfully called func: create_root_cert<br \/>\nGenerated configuration file: \/compose_location\/docker-compose.yml<br \/>\nClean up the input dir<br \/>\n&#8230;<br \/>\n&#8230;.<br \/>\nNote: stopping existing Harbor instance &#8230;<\/p>\n<p>[Step 5]: starting Harbor &#8230;<br \/>\n[&#043;] Building 0.0s (0\/0)                                                             docker:default<br \/>\n[&#043;] Running 10\/10<br \/>\n \u2714 Network harbor_harbor        Created                                                       0.2s<br \/>\n \u2714 Container harbor-log         Started                                                       0.1s<br \/>\n \u2714 Container harbor-portal      Started                                                       0.1s<br \/>\n \u2714 Container redis              Started                                                       0.2s<br \/>\n \u2714 Container registryctl        Started                                                       0.1s<br \/>\n \u2714 Container registry           Started                                                       0.1s<br \/>\n \u2714 Container harbor-db          Started                                                       0.1s<br \/>\n \u2714 Container harbor-core        Started                                                       0.0s<br \/>\n \u2714 Container harbor-jobservice  Started                                                       0.1s<br \/>\n \u2714 Container nginx              Started                                                       0.1s<br \/>\n\u2714 &#8212;-Harbor has been installed and started successfully.&#8212;-<\/p>\n<p>[root&#064;master02 harbor]# docker-compose ps -a<br \/>\nNAME                IMAGE                                 COMMAND                  SERVICE       CREATED         STATUS                   PORTS<br \/>\nharbor-core         goharbor\/harbor-core:v2.14.0          &#034;\/harbor\/entrypoint.\u2026&#034;   core          4 minutes ago   Up 4 minutes (healthy)<br \/>\nharbor-db           goharbor\/harbor-db:v2.14.0            &#034;\/docker-entrypoint.\u2026&#034;   postgresql    4 minutes ago   Up 4 minutes (healthy)<br \/>\nharbor-jobservice   goharbor\/harbor-jobservice:v2.14.0    &#034;\/harbor\/entrypoint.\u2026&#034;   jobservice    4 minutes ago   Up 4 minutes (healthy)<br \/>\nharbor-log          goharbor\/harbor-log:v2.14.0           &#034;\/bin\/sh -c \/usr\/loc\u2026&#034;   log           4 minutes ago   Up 4 minutes (healthy)   127.0.0.1:1514-&gt;10514\/tcp<br \/>\nharbor-portal       goharbor\/harbor-portal:v2.14.0        &#034;nginx -g &#039;daemon of\u2026&#034;   portal        4 minutes ago   Up 4 minutes (healthy)<br \/>\nnginx               goharbor\/nginx-photon:v2.14.0         &#034;nginx -g &#039;daemon of\u2026&#034;   proxy         4 minutes ago   Up 4 minutes (healthy)   0.0.0.0:80-&gt;8080\/tcp<br \/>\nredis               goharbor\/redis-photon:v2.14.0         &#034;redis-server \/etc\/r\u2026&#034;   redis         4 minutes ago   Up 4 minutes (healthy)<br \/>\nregistry            goharbor\/registry-photon:v2.14.0      &#034;\/home\/harbor\/entryp\u2026&#034;   registry      4 minutes ago   Up 4 minutes (healthy)<br \/>\nregistryctl         goharbor\/harbor-registryctl:v2.14.0   &#034;\/home\/harbor\/start.\u2026&#034;   registryctl   4 minutes ago   Up 4 minutes (healthy)<br \/>\n[root&#064;master02 harbor]# <\/p>\n<p>\u8bbf\u95eeUI\u9875\u9762\u67e5\u770b<br \/>\n80&#xff1a; http:\/\/10.0.250.4\/harbor\/projects<br \/>\n\u5185\u7f51 \u914d\u7f6ehosts\u8f6c\u53d1<br \/>\n443&#xff1a; https:\/\/hb.aixxw.xin\/harbor\/projects<\/p>\n<p>\u5173\u4e8e\u81ea\u7b7e\u8bc1\u4e66\u57fa\u4e8ek8s\u96c6\u7fa4cfssl\u7b7e\u53d1CAz\u8bc1\u4e66<\/p>\n<p>&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;\u5206\u5272\u7ebf&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\n\u94fe\u63a5&#xff1a;<br \/>\nhttps:\/\/blog.csdn.net\/weixin_45049740\/article\/details\/156514328?spm&#061;1001.2014.3001.5502<\/p>\n<p>[root&#064;master01 ~]# cd \/k8s\/certs\/pki<br \/>\n[root&#064;master01 pki]# ls<br \/>\n admin-csr.json                etcd-ca-csr.json              k8s-ca-csr.json<br \/>\n apiserver-csr.json            etcd-csr.json                &#039;s -ntl | grep 10257&#039;<br \/>\n bootstrap-secret.yaml         front-proxy-ca-csr.json      &#039;s -ntl | grep 10259&#039;<br \/>\n ca-config.json                front-proxy-client-csr.json   scheduler-csr.json<br \/>\n controller-manager-csr.json   k8s-ca-config.json<br \/>\n[root&#064;master01 pki]# vim harbor-csr.json<br \/>\n{<br \/>\n  &#034;CN&#034;: &#034;10.0.250.4&#034;,<br \/>\n  &#034;key&#034;: {<br \/>\n    &#034;algo&#034;: &#034;rsa&#034;,<br \/>\n    &#034;size&#034;: 2048<br \/>\n  },<br \/>\n  &#034;names&#034;: [<br \/>\n    {<br \/>\n      &#034;C&#034;: &#034;CN&#034;,<br \/>\n      &#034;ST&#034;: &#034;Beijing&#034;,<br \/>\n      &#034;L&#034;: &#034;Beijing&#034;,<br \/>\n      &#034;O&#034;: &#034;Harbor&#034;,<br \/>\n      &#034;OU&#034;: &#034;Harbor-manual&#034;<br \/>\n    }<br \/>\n  ]<br \/>\n}<\/p>\n<p>\/\/ \u7b7e\u53d1Harbor\u8bc1\u4e66<br \/>\n[root&#064;master01 pki]#<br \/>\ncfssl gencert \\\\<br \/>\n  -ca&#061;\/k8s\/certs\/kubernetes\/k8s-ca.pem \\\\<br \/>\n  -ca-key&#061;\/k8s\/certs\/kubernetes\/k8s-ca-key.pem \\\\<br \/>\n  -config&#061;k8s-ca-config.json \\\\<br \/>\n  &#8211;hostname&#061;hb.aixxw.xin,10.0.250.4,10.0.250.5,10.0.250.2 \\\\<br \/>\n  &#8211;profile&#061;kubernetes \\\\<br \/>\n  harbor-csr.json | cfssljson -bare \/k8s\/certs\/kubernetes\/harbor<\/p>\n<p>[root&#064;master01 pki]# ll \/k8s\/certs\/kubernetes\/harbor*<br \/>\n-rw&#8212;&#8212;- 1 root root 1679 Jan 29 21:46 \/k8s\/certs\/kubernetes\/harbor-key.pem<br \/>\n-rw-r&#8211;r&#8211; 1 root root 1078 Jan 29 21:46 \/k8s\/certs\/kubernetes\/harbor.csr<br \/>\n-rw-r&#8211;r&#8211; 1 root root 1476 Jan 29 21:46 \/k8s\/certs\/kubernetes\/harbor.pem<\/p>\n<p>[root&#064;master01 pki]# scp \/k8s\/certs\/kubernetes\/harbor.pem 10.0.250.4:\/\/etc\/aliyum\/aixxw\/aixxw.xin.pem<br \/>\nharbor.pem                                                       100% 1476     2.2MB\/s   00:00<br \/>\n[root&#064;master01 pki]# scp \/k8s\/certs\/kubernetes\/harbor-key.pem  10.0.250.4:\/\/etc\/aliyum\/aixxw\/aixxw.xin.key<br \/>\nharbor-key.pem<br \/>\n[root&#064;master01 pki]# cd  \/k8s\/certs\/kubernetes\/<br \/>\n[root&#064;master01 kubernetes]# ls<br \/>\nadmin-key.pem               controller-manager.pem      harbor.csr          sa.key<br \/>\nadmin.csr                   front-proxy-ca-key.pem      harbor.pem          sa.pub<br \/>\nadmin.pem                   front-proxy-ca.csr          k8s-ca-key.pem      scheduler-key.pem<br \/>\napiserver-key.pem           front-proxy-ca.pem          k8s-ca.csr          scheduler.csr<br \/>\napiserver.csr               front-proxy-client-key.pem  k8s-ca.pem          scheduler.pem<br \/>\napiserver.pem               front-proxy-client.csr      kube-proxy-key.pem<br \/>\ncontroller-manager-key.pem  front-proxy-client.pem      kube-proxy.csr<br \/>\ncontroller-manager.csr      harbor-key.pem              kube-proxy.pem<\/p>\n<p>[root&#064;master01 kubernetes]# cp \/k8s\/certs\/kubernetes\/k8s-ca.pem \/usr\/local\/share\/ca-certificates\/k8s-root-ca.crt<br \/>\n[root&#064;master01 kubernetes]# scp  \/k8s\/certs\/kubernetes\/k8s-ca.pem  10.0.250.4:\/\/usr\/local\/share\/ca-certificates\/k8s-root-ca.crt<br \/>\nk8s-ca.pem                                                       100% 1363     1.9MB\/s   00:00<br \/>\n[root&#064;master01 kubernetes]# scp  \/k8s\/certs\/kubernetes\/k8s-ca.pem  10.0.250.5:\/\/usr\/local\/share\/ca-certificates\/k8s-root-ca.crt<br \/>\nk8s-ca.pem                                                       100% 1363     2.9MB\/s   00:00<br \/>\n[root&#064;master01 kubernetes]# scp  \/k8s\/certs\/kubernetes\/k8s-ca.pem  10.0.250.6:\/\/usr\/local\/share\/ca-certificates\/k8s-root-ca.crt<br \/>\nk8s-ca.pem                                                       100% 1363   677.1KB\/s   00:00<br \/>\n[root&#064;master01 kubernetes]# scp  \/k8s\/certs\/kubernetes\/k8s-ca.pem  10.0.250.7:\/\/usr\/local\/share\/ca-certificates\/k8s-root-ca.crt<br \/>\nk8s-ca.pem                                                       100% 1363     3.4MB\/s   00:00<br \/>\n[root&#064;master01 kubernetes]# scp  \/k8s\/certs\/kubernetes\/k8s-ca.pem  10.0.250.2:\/\/usr\/local\/share\/ca-certificates\/k8s-root-ca.crt<\/p>\n<p>\u66f4\u65b0\u7cfb\u7edf CA \u4fe1\u4efb\u5e93<br \/>\nupdate-ca-certificates<br \/>\n[root&#064;master01 kubernetes]# cat \/etc\/hosts<br \/>\n127.0.1.1 sertw3u8sr18n.local sertw3u8sr18n<br \/>\n127.0.0.1 localhost<br \/>\n::1 localhost ip6-localhost ip6-loopback<br \/>\nff02::1 ip6-allnodes<br \/>\nff02::2 ip6-allrouters<br \/>\n10.0.250.2 apiserver-lb<br \/>\n10.0.250.3 master01<br \/>\n10.0.250.4 master02 hb.aixxw.xin<br \/>\n10.0.250.5 master03<br \/>\n10.0.250.6 worker01<br \/>\n10.0.250.7 worker02<br \/>\n \u91cd\u542f\u670d\u52a1<\/p>\n<p>[root&#064;master02 aixxw]# cd \/usr\/local\/harbor\/<br \/>\n[root&#064;master02 harbor]# docker-compose down<br \/>\n[&#043;] Running 10\/10<br \/>\n \u2714 Container registryctl        Removed                                                       0.9s<br \/>\n \u2714 Container nginx              Removed                                                       0.9s<br \/>\n \u2714 Container harbor-jobservice  Removed                                                       0.8s<br \/>\n \u2714 Container harbor-portal      Removed                                                       0.6s<br \/>\n \u2714 Container harbor-core        Removed                                                       0.8s<br \/>\n \u2714 Container registry           Removed                                                       0.9s<br \/>\n \u2714 Container redis              Removed                                                       1.0s<br \/>\n \u2714 Container harbor-db          Removed                                                       1.1s<br \/>\n \u2714 Container harbor-log         Removed                                                      10.5s<br \/>\n \u2714 Network harbor_harbor        Removed                                                       0.1s <\/p>\n<p>[root&#064;master02 harbor]# .\/prepare<br \/>\nprepare base dir is set to \/usr\/local\/harbor<br \/>\nClearing the configuration file: \/config\/log\/rsyslog_docker.conf<br \/>\n&#8230;<br \/>\nloaded secret from file: \/data\/secret\/keys\/secretkey<br \/>\nGenerated configuration file: \/compose_location\/docker-compose.yml<br \/>\nClean up the input dir<br \/>\n[root&#064;master02 harbor]# docker-compose up -d<br \/>\n[&#043;] Building 0.0s (0\/0)                                                             docker:default<br \/>\n[&#043;] Running 10\/10<br \/>\n \u2714 Network harbor_harbor        Created                                                       0.2s<br \/>\n \u2714 Container harbor-log         Started                                                       0.0s<br \/>\n \u2714 Container harbor-portal      Started                                                       0.2s<br \/>\n \u2714 Container redis              Started                                                       0.2s<br \/>\n \u2714 Container harbor-db          Started                                                       0.2s<br \/>\n \u2714 Container registryctl        Started                                                       0.2s<br \/>\n \u2714 Container registry           Started                                                       0.2s<br \/>\n \u2714 Container harbor-core        Started                                                       0.1s<br \/>\n \u2714 Container nginx              Started                                                       0.1s<br \/>\n \u2714 Container harbor-jobservice  Started                                                       0.0s <\/p>\n<p>[root&#064;master01 kubernetes]# curl https:\/\/10.0.250.4\/harbor\/projects<br \/>\n&lt;!DOCTYPE html&gt;<br \/>\n&lt;html&gt;<br \/>\n    &lt;head&gt;<br \/>\n        &lt;meta charset&#061;&#034;utf-8&#034;\/&gt;<br \/>\n        &lt;title&gt;Harbor&lt;\/title&gt;<br \/>\n        &lt;base href&#061;&#034;\/&#034;\/&gt;<br \/>\n        &lt;meta name&#061;&#034;viewport&#034; content&#061;&#034;width&#061;device-width, initial-scale&#061;1&#034;\/&gt;<br \/>\n        &lt;link rel&#061;&#034;icon&#034; type&#061;&#034;image\/x-icon&#034; href&#061;&#034;favicon.ico?v&#061;2&#034;\/&gt;<br \/>\n    &lt;link rel&#061;&#034;stylesheet&#034; href&#061;&#034;styles.ac415221c96d2bef.css&#034;&gt;&lt;\/head&gt;<br \/>\n    &lt;body&gt;<br \/>\n        &lt;harbor-app&gt;<br \/>\n            &lt;div class&#061;&#034;spinner spinner-lg app-loading app-loading-fixed&#034;&gt;<br \/>\n                Loading&#8230;<br \/>\n            &lt;\/div&gt;<br \/>\n        &lt;\/harbor-app&gt;<br \/>\n    &lt;script src&#061;&#034;runtime.2ce36195b41ae8b5.js&#034; type&#061;&#034;module&#034;&gt;&lt;\/script&gt;&lt;script src&#061;&#034;polyfills.d87db3092ff69ed9.js&#034; type&#061;&#034;module&#034;&gt;&lt;\/script&gt;&lt;script src&#061;&#034;scripts.3846d86d42cdb753.js&#034; defer&gt;&lt;\/script&gt;&lt;script src&#061;&#034;main.8999bc94f4db915b.js&#034; type&#061;&#034;module&#034;&gt;&lt;\/script&gt;&lt;\/body&gt;<br \/>\n&lt;\/html&gt;<br \/>\n[root&#064;master01 kubernetes]# curl https:\/\/hb.aixxw.xin\/harbor\/projects<br \/>\n&lt;!DOCTYPE html&gt;<br \/>\n&lt;html&gt;<br \/>\n    &lt;head&gt;<br \/>\n        &lt;meta charset&#061;&#034;utf-8&#034;\/&gt;<br \/>\n        &lt;title&gt;Harbor&lt;\/title&gt;<br \/>\n        &lt;base href&#061;&#034;\/&#034;\/&gt;<br \/>\n        &lt;meta name&#061;&#034;viewport&#034; content&#061;&#034;width&#061;device-width, initial-scale&#061;1&#034;\/&gt;<br \/>\n        &lt;link rel&#061;&#034;icon&#034; type&#061;&#034;image\/x-icon&#034; href&#061;&#034;favicon.ico?v&#061;2&#034;\/&gt;<br \/>\n    &lt;link rel&#061;&#034;stylesheet&#034; href&#061;&#034;styles.ac415221c96d2bef.css&#034;&gt;&lt;\/head&gt;<br \/>\n    &lt;body&gt;<br \/>\n        &lt;harbor-app&gt;<br \/>\n            &lt;div class&#061;&#034;spinner spinner-lg app-loading app-loading-fixed&#034;&gt;<br \/>\n                Loading&#8230;<br \/>\n            &lt;\/div&gt;<br \/>\n        &lt;\/harbor-app&gt;<br \/>\n    &lt;script src&#061;&#034;runtime.2ce36195b41ae8b5.js&#034; type&#061;&#034;module&#034;&gt;&lt;\/script&gt;&lt;script src&#061;&#034;polyfills.d87db3092ff69ed9.js&#034; type&#061;&#034;module&#034;&gt;&lt;\/script&gt;&lt;script src&#061;&#034;scripts.3846d86d42cdb753.js&#034; defer&gt;&lt;\/script&gt;&lt;script src&#061;&#034;main.8999bc94f4db915b.js&#034; type&#061;&#034;module&#034;&gt;&lt;\/script&gt;&lt;\/body&gt;<br \/>\n&lt;\/html&gt;<br \/>\n&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;\u5206\u5272\u7ebf&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/p>\n<h5>5. \u642d\u5efa\u526f\u955c\u50cf<\/h5>\n<p>\u5148\u65b0\u5efa\u4e00\u4e2a\u4ed3\u5e93 <img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/01\/20260130190911-697d01d76f814.jpg\" alt=\"\u65b0\u5efa\u4ed3\u5e93\" \/><\/p>\n<h5>6. \u526f\u8282\u70b9\u914d\u7f6e<\/h5>\n<p>scp docker-comp.tar.gz 10.0.250.5:\/root\/<br \/>\nscp  harbor-offline-installer-v2.14.0.tgz  10.0.250.5:\/root\/<\/p>\n<p>[root&#064;master03 ~]# tar xf docker-comp.tar.gz<br \/>\n[root&#064;master03 ~]# .\/install-docker.sh<br \/>\n[root&#064;master03 ~]# docker images<br \/>\nREPOSITORY   TAG       IMAGE ID   CREATED   SIZE<br \/>\n[root&#064;master03 ~]# tar xf harbor-offline-installer-v2.14.0.tgz -C \/usr\/local\/<\/p>\n<p>[root&#064;master03 ~]# cd \/usr\/local\/harbor\/<br \/>\n[root&#064;master03 harbor]# ls<br \/>\nLICENSE  common.sh  harbor.v2.14.0.tar.gz  harbor.yml.tmpl  install.sh  prepare<br \/>\ncp harbor.yml{.tmpl,}<br \/>\nvim harbor.yml<br \/>\n&#8230;<br \/>\n#hostname: reg.mydomain.com<br \/>\nhostname: 10.0.250.5<br \/>\n# http related config<br \/>\nhttp:<br \/>\n  # port for http, default is 80. If https enabled, this port will redirect to https port<br \/>\n  port: 80<\/p>\n<p># https related config<br \/>\nhttps:   #\u53ef\u6ce8\u91ca<br \/>\n  #  # https port for harbor, default is 443<br \/>\n  port: 443     #\u53ef\u6ce8\u91ca<br \/>\n  #  # The path of cert and key files for nginx<br \/>\n  certificate:  \/etc\/aliyum\/aixxw\/aixxw.xin.pem     #\u53ef\u6ce8\u91ca<br \/>\n  private_key:  \/etc\/aliyum\/aixxw\/aixxw.xin.key    #\u53ef\u6ce8\u91ca<br \/>\n  # enable strong ssl ciphers (default: false)<br \/>\n  # strong_ssl_ciphers: false<br \/>\n&#8230;<br \/>\nharbor_admin_password: 123<br \/>\n&#8230;<br \/>\ndata_volume: \/var\/lib\/harbor<br \/>\n&#8230;<br \/>\n \u63d0\u793a&#xff1a;<br \/>\n \u914d\u7f6e\u4e86nginx\u7684\u8bb0\u5f97\u5173\u95ed<br \/>\n systemctl disable &#8211;now nginx<br \/>\n[root&#064;master03 harbor]#  .\/install.sh<\/p>\n<p>&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;\u5206\u5272\u7ebf&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\n\u63d0\u793a&#xff1a;<br \/>\n\u5f00\u542f\u4e86443\u7684\u4e0d\u8981\u5fd8\u8bb0\u8bc1\u4e66<br \/>\n[root&#064;master03 harbor]# mkdir -pv \/etc\/aliyum\/aixxw\/<br \/>\nmkdir: created directory &#039;\/etc\/aliyum&#039;<br \/>\nmkdir: created directory &#039;\/etc\/aliyum\/aixxw\/&#039;<br \/>\n[root&#064;master03 harbor]# cd \/etc\/aliyum\/aixxw\/<br \/>\n[root&#064;master03 aixxw]# ls<br \/>\naixxw.xin.key  aixxw.xin.pem<br \/>\n[root&#064;master03 ~]# cd \/usr\/local\/harbor\/<br \/>\n&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;\u5206\u5272\u7ebf&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/01\/20260130190912-697d01d81af9c.jpg\" alt=\"\u914d\u7f6e\u540c\u6b65\u4e3b\u5e93\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/01\/20260130190912-697d01d8aeb29.jpg\" alt=\"\u8bf7\u6dfb\u52a0\u56fe\u7247\u63cf\u8ff0\" \/> game\u955c\u50cf\u5305\u4e0b\u8f7d\u5730\u5740&#xff1a; \u94fe\u63a5:https:\/\/pan.baidu.com\/s\/1k4yZHQoCawwvsUkKRbtBKw?pwd&#061;v2kf \u63d0\u53d6\u7801:v2kf<\/p>\n<p>\u56de\u5230\u4e3b\u955c\u50cf\u670d\u52a1\u5668 docker load -i testgame-v0.1.tar 73974f74b436: Loading layer 31.57MB\/31.57MB b3c13d98fe6e: Loading layer 62.88MB\/62.88MB Loaded image: testgame:v0.1 [root&#064;master02 ~]# docker image tag testgame:v0.1 hb.aixxw.xin\/gamehtml\/testgame:v0.1 \u767b\u5f55&#xff1a; \u8f93\u5165\u7528\u6237admin \u5bc6\u7801123 \u63d0\u793a&#xff1a;\u914d\u7f6ehosts\u89e3\u6790\u4f18\u5148\u5185\u7f51\u4f20\u8f93 \u516c\u7f51&#xff1a; docker login hb.aixxw.xin #\u767b\u5f55 docker logout hb.aixxw.xin #\u9000\u51fa \u5185\u7f51&#xff1a; docker login 10.0.250.4 docker logout 10.0.250.4 \u63d0\u4ea4 [root&#064;master02 ~]# docker image push hb.aixxw.xin\/gamehtml\/testgame:v0.1<\/p>\n<p>\u56de\u5230\u526fharbor\u9875\u9762\u89c2\u5bdf\u662f\u5426\u540c\u6b65\u5230\u4f4d \u6bcf1\u5206\u949f\u540c\u6b65\u4e00\u6b21\u592a\u6d88\u8017\u8d44\u6e90\u4ec5\u6d4b\u8bd5\u4f7f\u7528&#xff08;\u5efa\u8bae\u6539\u62105-15\u5206\u949f\u540c\u6b65\u4e00\u6b21&#xff09; <img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/01\/20260130190913-697d01d91a6ec.png\" alt=\"\u8bf7\u6dfb\u52a0\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<p>\u63a5\u4e0b\u91cc\u6784\u5efaharbor\u7684\u9ad8\u53ef\u7528<\/p>\n<h5>7. \u9ad8\u53ef\u7528\u7684\u5b9e\u73b0<\/h5>\n<p>\u65b9\u6848\u4e00&#xff1a;keepalived<\/p>\n<p>7.1 \u4e24\u4e2a\u8282\u70b9\u5b89\u88c5keepalived<br \/>\napt -y install keepalived<br \/>\n7.2 harbor\u4e3b\u8282\u70b9\u4fee\u6539keepalived\u914d\u7f6e<br \/>\n cat &gt; \/etc\/keepalived\/keepalived.conf &lt;&lt;&#039;EOF&#039;<br \/>\n! Configuration File for keepalived<br \/>\nglobal_defs {<br \/>\n   router_id 10.0.250.4<br \/>\n}<br \/>\nvrrp_script chk_nginx {<br \/>\n    script &#034;\/etc\/keepalived\/check_port.sh 8443&#034;<br \/>\n    interval 2<br \/>\n    weight -20<br \/>\n}<br \/>\nvrrp_instance VI_1 {<br \/>\n    state MASTER<br \/>\n    interface eth0<br \/>\n    virtual_router_id 251<br \/>\n    priority 100<br \/>\n    advert_int 1<br \/>\n    mcast_src_ip 10.0.250.4<br \/>\n    nopreempt<br \/>\n    authentication {<br \/>\n        auth_type PASS<br \/>\n        auth_pass pwdk8s<br \/>\n    }<br \/>\n    track_script {<br \/>\n         chk_nginx<br \/>\n    }<br \/>\n    virtual_ipaddress {<br \/>\n        10.0.250.200<br \/>\n    }<br \/>\n}<br \/>\nEOF<\/p>\n<p>7.2 \u526f\u8282\u70b9\u4fee\u6539keepalived\u914d\u7f6e<br \/>\n cat &gt; \/etc\/keepalived\/keepalived.conf &lt;&lt;&#039;EOF&#039;<br \/>\n! Configuration File for keepalived<br \/>\nglobal_defs {<br \/>\n   router_id 10.0.250.5<br \/>\n}<br \/>\nvrrp_script chk_nginx {<br \/>\n    script &#034;\/etc\/keepalived\/check_port.sh 8443&#034;<br \/>\n    interval 2<br \/>\n    weight -20<br \/>\n}<br \/>\nvrrp_instance VI_1 {<br \/>\n    state BACKUP<br \/>\n    interface eth0<br \/>\n    virtual_router_id 251<br \/>\n    priority 80<br \/>\n    advert_int 1<br \/>\n    mcast_src_ip 10.0.250.5<br \/>\n    nopreempt<br \/>\n    authentication {<br \/>\n        auth_type PASS<br \/>\n        auth_pass pwdk8s<br \/>\n    }<br \/>\n    track_script {<br \/>\n         chk_nginx<br \/>\n    }<br \/>\n    virtual_ipaddress {<br \/>\n        10.0.250.200<br \/>\n    }<br \/>\n}<br \/>\nEOF<br \/>\n\u90fd\u914d\u7f6e\u5065\u5eb7\u68c0\u67e5\u811a\u672c<br \/>\ncat \/etc\/keepalived\/check_port.sh<br \/>\n#!\/bin\/bash<br \/>\nCHK_PORT&#061;$1<br \/>\n[ -z &#034;$CHK_PORT&#034; ] &amp;&amp; { echo &#034;Error: \u68c0\u6d4b\u7aef\u53e3\u4e0d\u80fd\u4e3a\u7a7a&#xff01;&#034;; exit 1; }<br \/>\nss -tln | grep -q &#034;:$CHK_PORT &#034;<br \/>\nif [ $? -eq 0 ]; then<br \/>\n    exit 0<br \/>\nelse<br \/>\n    echo &#034;Warning: 8443\u7aef\u53e3\u672a\u76d1\u542c&#xff0c;\u89e6\u53d1Keepalived\u5207\u6362&#8230;&#034;<br \/>\n    exit 1<br \/>\nfi<\/p>\n<p>\u4fe9\u8282\u70b9\u90fd\u542f\u52a8<br \/>\nsystemctl enable &#8211;now keepalived<br \/>\n\u6d4b\u8bd5<br \/>\nhttps:\/\/10.0.250.200\/<\/p>\n<p>\u65b9\u6848\u4e8c&#xff1a;nginx\u56db\u5c42\u4e3b\u5907\u6a21\u5f0f<\/p>\n<p>\u6211\u7684\u73af\u5883\u662f\u516c\u6709\u4e91\u53ef\u4ee5\u7528SLB  \u4f46\u8fd9\u91cc\u6ca1\u6709\u7528\u81ea\u5df1\u7528LB\u505a\u4e86\u56db\u5c42\u8f6c\u53d1<br \/>\ncd \/etc\/nginx\/<br \/>\n[root&#064;apiserver-lb nginx]# cat nginx.conf<br \/>\n&#8230;<br \/>\nevents {<br \/>\n&#8230;<br \/>\n}<br \/>\n&#8230;<br \/>\nstream {<\/p>\n<p>    #harbor_nodes<br \/>\n    upstream harbor_nodes {<br \/>\n        server 10.0.250.4:443 max_fails&#061;2 fail_timeout&#061;30s;<br \/>\n        server 10.0.250.5:443 max_fails&#061;2 fail_timeout&#061;30s backup;<br \/>\n    }<br \/>\n    # 8444 harbor_nodes<br \/>\n    server {<br \/>\n        listen 8444;<br \/>\n        proxy_pass harbor_nodes;<br \/>\n        proxy_timeout 1h;<br \/>\n        proxy_responses 0;<br \/>\n        proxy_buffer_size 4k;<br \/>\n    }<\/p>\n<p>}<br \/>\n&#8230;<br \/>\nhttp {<br \/>\n&#8230;<br \/>\n}<\/p>\n<p>\u6d4b\u8bd5<\/p>\n<p>docker login hb.aixxw.xin:8444     #\u767b\u5f55<br \/>\n\u6539\u6807\u7b7e<br \/>\ndocker image tag hb.aixxw.xin\/gamehtml\/testgame:v0.1 hb.aixxw.xin:8444\/gamehtml\/testgame:v0.1<br \/>\n\u63a8\u9001<br \/>\ndocker image push hb.aixxw.xin:8444\/gamehtml\/testgame:v0.1<br \/>\n\u5728\u526fharbor\u8bd5\u8bd5\u62c9\u53d6\u5230\u672c\u5730docker image\u91cc<br \/>\ndocker pull hb.aixxw.xin:8444\/gamehtml\/testgame:v0.1<\/p>\n<p>docker logout hb.aixxw.xin:8444   #\u9000\u51fa<br \/>\n&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;\u5206\u5272\u7ebf&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\n\u8bd5\u8bd5k8s\u7684ctr\u62c9\u53d6\u600e\u4e48\u6837<br \/>\n[root&#064;worker01 ~]# ctr  images pull hb.aixxw.xin:8444\/dockersystemos\/ubuntu:22.04<br \/>\nhb.aixxw.xin:8444\/dockersystemos\/ubuntu:22.04:                                    resolved       |&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;|<br \/>\nmanifest-sha256:bd1487129c4e01470664c3f3c9a25ce01f73ff3df75ffa7eb3388d3d4b945369: done           |&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;|<br \/>\nlayer-sha256:9b857f539cb142c9aa2201a17bb8e1cd5cf12edd4a65adf5732fe9f4343964cf:    done           |&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;|<br \/>\nconfig-sha256:8a3cdc4d1ad3e314a91f76b7b99eed443f2152e3a9bf33e46669b31d094be443:   exists         |&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;&#043;|<br \/>\nelapsed: 1.1 s                                                                    total:  29.0 M (26.4 MiB\/s)<br \/>\nunpacking linux\/amd64 sha256:bd1487129c4e01470664c3f3c9a25ce01f73ff3df75ffa7eb3388d3d4b945369&#8230;<br \/>\ndone: 9.426132ms<br \/>\n[root&#064;worker01 ~]# ctr -n k8s.io images ls |grep hb.aixxw.xin:8444\/dockersystemos\/ubuntu:22.04<br \/>\n[root&#064;worker01 ~]# ctr images ls |grep hb.aixxw.xin:8444\/dockersystemos\/ubuntu:22.04<br \/>\nhb.aixxw.xin:8444\/dockersystemos\/ubuntu:22.04 application\/vnd.docker.distribution.manifest.v2&#043;json sha256:bd1487129c4e01470664c3f3c9a25ce01f73ff3df75ffa7eb3388d3d4b945369 29.0 MiB linux\/amd64 &#8211;<br \/>\n[root&#064;worker01 ~]# ctr images  rm hb.aixxw.xin:8444\/dockersystemos\/ubuntu:22.04<br \/>\nhb.aixxw.xin:8444\/dockersystemos\/ubuntu:22.04<br \/>\n[root&#064;worker01 ~]# ctr images ls |grep hb.aixxw.xin:8444\/dockersystemos\/ubuntu:22.04<br \/>\n[root&#064;worker01 ~]# <\/p>\n<p>ok\u81f3\u6b64\u5168\u90e8\u5b8c\u6210 \u8fd9\u5957\u90e8\u7f72\u7edd\u5bf9\u6ee1\u8db3\u65e5\u5e38\u4f7f\u7528\u4e86<\/p>\n","protected":false},"excerpt":{"rendered":"<p>harbor\u662fVMware\u516c\u53f8\u5f00\u6e90\u7684\u4e00\u6b3e\u4f01\u4e1a\u7ea7\u955c\u50cf\u4ed3\u5e93&#xff0c;\u5e95\u5c42\u57fa\u4e8edocker-compose\u6765\u7ba1\u7406harbor\u670d\u52a1 docker\u7684\u79c1\u6709\u4ed3\u5e93\u7528\u8d77\u6765\u592a\u9ebb\u70e6\u6211\u4eec\u4f7f\u7528harbor\u6765\u7ba1\u7406\u955c\u50cf \u63a5\u4e0b\u6765\u5b66\u4e60\u4e00\u4e0b\u5982\u4f55\u642d\u5efa\u90e8\u7f72\u4e00\u4e2a\u9ad8\u53ef\u7528\u4f01\u4e1a\u7ea7\u7684harbot\u79c1\u6709\u4ed3\u5e93\u7684\u90e8\u7f72\u8fc7\u7a0b \u6211\u7684\u7cfb\u7edf\u662fUbuntu22.04\u7248\u672c<br \/>\nharbor\u7684\u9ad8\u53ef\u7528\u90e8\u7f72<br \/>\n1. \u4e0b\u8f7dharbor\u8f6f\u4ef6\u5305<br \/>\nwget https:\/\/github.com\/goharbor\/harbor\/releases\/downl<\/p>\n","protected":false},"author":2,"featured_media":69038,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[27,120,121,43],"topic":[],"class_list":["post-69042","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","tag-docker","tag-kubernetes","tag-121","tag-43"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>harbor-v2.14.0\u9ad8\u53ef\u7528\u90e8\u7f72\u57fa\u4e8eUbuntu22.04 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/69042.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"harbor-v2.14.0\u9ad8\u53ef\u7528\u90e8\u7f72\u57fa\u4e8eUbuntu22.04 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"harbor\u662fVMware\u516c\u53f8\u5f00\u6e90\u7684\u4e00\u6b3e\u4f01\u4e1a\u7ea7\u955c\u50cf\u4ed3\u5e93&#xff0c;\u5e95\u5c42\u57fa\u4e8edocker-compose\u6765\u7ba1\u7406harbor\u670d\u52a1 docker\u7684\u79c1\u6709\u4ed3\u5e93\u7528\u8d77\u6765\u592a\u9ebb\u70e6\u6211\u4eec\u4f7f\u7528harbor\u6765\u7ba1\u7406\u955c\u50cf \u63a5\u4e0b\u6765\u5b66\u4e60\u4e00\u4e0b\u5982\u4f55\u642d\u5efa\u90e8\u7f72\u4e00\u4e2a\u9ad8\u53ef\u7528\u4f01\u4e1a\u7ea7\u7684harbot\u79c1\u6709\u4ed3\u5e93\u7684\u90e8\u7f72\u8fc7\u7a0b \u6211\u7684\u7cfb\u7edf\u662fUbuntu22.04\u7248\u672c harbor\u7684\u9ad8\u53ef\u7528\u90e8\u7f72 1. \u4e0b\u8f7dharbor\u8f6f\u4ef6\u5305 wget https:\/\/github.com\/goharbor\/harbor\/releases\/downl\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/69042.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-30T19:09:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/01\/20260130190911-697d01d76f814.jpg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/69042.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/69042.html\",\"name\":\"harbor-v2.14.0\u9ad8\u53ef\u7528\u90e8\u7f72\u57fa\u4e8eUbuntu22.04 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-01-30T19:09:14+00:00\",\"dateModified\":\"2026-01-30T19:09:14+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/69042.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/69042.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/69042.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"harbor-v2.14.0\u9ad8\u53ef\u7528\u90e8\u7f72\u57fa\u4e8eUbuntu22.04\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"harbor-v2.14.0\u9ad8\u53ef\u7528\u90e8\u7f72\u57fa\u4e8eUbuntu22.04 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/69042.html","og_locale":"zh_CN","og_type":"article","og_title":"harbor-v2.14.0\u9ad8\u53ef\u7528\u90e8\u7f72\u57fa\u4e8eUbuntu22.04 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"harbor\u662fVMware\u516c\u53f8\u5f00\u6e90\u7684\u4e00\u6b3e\u4f01\u4e1a\u7ea7\u955c\u50cf\u4ed3\u5e93&#xff0c;\u5e95\u5c42\u57fa\u4e8edocker-compose\u6765\u7ba1\u7406harbor\u670d\u52a1 docker\u7684\u79c1\u6709\u4ed3\u5e93\u7528\u8d77\u6765\u592a\u9ebb\u70e6\u6211\u4eec\u4f7f\u7528harbor\u6765\u7ba1\u7406\u955c\u50cf \u63a5\u4e0b\u6765\u5b66\u4e60\u4e00\u4e0b\u5982\u4f55\u642d\u5efa\u90e8\u7f72\u4e00\u4e2a\u9ad8\u53ef\u7528\u4f01\u4e1a\u7ea7\u7684harbot\u79c1\u6709\u4ed3\u5e93\u7684\u90e8\u7f72\u8fc7\u7a0b \u6211\u7684\u7cfb\u7edf\u662fUbuntu22.04\u7248\u672c harbor\u7684\u9ad8\u53ef\u7528\u90e8\u7f72 1. \u4e0b\u8f7dharbor\u8f6f\u4ef6\u5305 wget https:\/\/github.com\/goharbor\/harbor\/releases\/downl","og_url":"https:\/\/www.wsisp.com\/helps\/69042.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-01-30T19:09:14+00:00","og_image":[{"url":"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/01\/20260130190911-697d01d76f814.jpg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"11 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/69042.html","url":"https:\/\/www.wsisp.com\/helps\/69042.html","name":"harbor-v2.14.0\u9ad8\u53ef\u7528\u90e8\u7f72\u57fa\u4e8eUbuntu22.04 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-01-30T19:09:14+00:00","dateModified":"2026-01-30T19:09:14+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/69042.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/69042.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/69042.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"harbor-v2.14.0\u9ad8\u53ef\u7528\u90e8\u7f72\u57fa\u4e8eUbuntu22.04"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/69042","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=69042"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/69042\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media\/69038"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=69042"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=69042"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=69042"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=69042"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}