{"id":408,"date":"2017-09-13T16:11:31","date_gmt":"2017-09-13T08:11:31","guid":{"rendered":"https:\/\/blog.jsjs.org\/?p=408"},"modified":"2017-09-13T16:11:31","modified_gmt":"2017-09-13T08:11:31","slug":"harbor%e7%9a%84%e6%90%ad%e5%bb%ba%ef%bc%88vmware%e4%bc%81%e4%b8%9a%e7%ba%a7docker%e9%95%9c%e5%83%8f%e7%a7%81%e6%9c%8d%ef%bc%89","status":"publish","type":"post","link":"https:\/\/blog.jsjs.org\/?p=408","title":{"rendered":"Harbor\u7684\u642d\u5efa\uff08vmware\u4f01\u4e1a\u7ea7docker\u955c\u50cf\u79c1\u670d\uff09"},"content":{"rendered":"<p>1\u3001\u4e0b\u8f7dharbor\uff0c\u5730\u5740https:\/\/github.com\/vmware\/harbor<br \/>\n2\u3001\u8fdb\u5165harbor-master\/Deploy\u76ee\u5f55\uff0c\u4fee\u6539harbor.cfg\u6587\u4ef6\uff0c\u4e3b\u8981\u4fee\u6539\u4ee5\u4e0b\u4fe1\u606f<br \/>\n2.1\u3001hostname =10.10.20.202 \uff08\u8fd9\u4e2a\u662fharbor\u6240\u5728\u670d\u52a1\u5668\u7684ip\uff0c\u4e0d\u80fd\u5199127.0.0.1\uff09<br \/>\n2.2\u3001\u4fee\u6539\u90ae\u7bb1\u76f8\u5173\u4fe1\u606f<\/p>\n<p>3\u3001\u6267\u884c.\/prepare\u547d\u4ee4<\/p>\n<p>4\u3001\u6dfb\u52a0\/etc\/sysconfig\/docker\u6587\u4ef6\uff0c\u6587\u4ef6\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n<p>OPTIONS=&#8221;&#8211;insecure-registry 10.10.20.202&#8243;<br \/>\n5\u3001\u4fee\u6539\/usr\/lib\/systemd\/system\/docker.service\u6587\u4ef6<\/p>\n<p>5.1\u3001\u65b0\u589e\u4e00\u884c\uff0cEnvironmentFile=-\/etc\/sysconfig\/docker\uff0c\u8be5\u6587\u4ef6\u53ea\u6709\u4e00\u884c\u5185\u5bb9\uff0cOPTIONS=&#8221;&#8211;insecure-registry 10.10.20.202&#8243;\uff0c\u5982\u679c\/usr\/lib\/systemd\/system\/docker.service\u6587\u4ef6\u4e2d\u4e0d\u589e\u52a0EnvironmentFile=-\/etc\/sysconfig\/docker\u8fd9\u884c\uff0c\u4e0b\u9762\u5bf9ExecStart\u7684\u4fee\u6539\u662f\u4e0d\u751f\u6548\u7684\u3002<\/p>\n<p>5.2\u3001\u4fee\u6539\u4e00\u884c\uff0cExecStart=\/usr\/bin\/dockerd $OPTIONS<\/p>\n<p>\u4e3a\u4ec0\u4e48\u8981\u4fee\u6539\u8fd9\u4e2a\u914d\u7f6e\u6587\u4ef6\u5462\uff1f&#8211;insecure-registry\u4ee3\u8868\u672c\u5730\u955c\u50cf\u5e93\uff0c\u4fee\u6539\u4e86\u4ee5\u4e0a\u914d\u7f6e\u6587\u4ef6\u540e\u9700\u8981\u91cd\u542fdocker\u670d\u52a1\uff0c\u6b64\u65f6docker login\u65f6\uff0c\u5c06\u8fde\u63a5\u6307\u5b9a\u7684\u672c\u5730\u955c\u50cf\u5e93\u3002<\/p>\n<p>\u5982\u679c\u4e0d\u4fee\u6539\u8fd9\u4e2a\u914d\u7f6e\u6587\u4ef6\uff0c\u5219\u767b\u5f55\u955c\u50cf\u79c1\u670d\u65f6\uff08docker login 10.10.20.202\uff09\u4f1a\u629b\u51fa\u5982\u4e0b\u9519\u8bef<\/p>\n<p>Error response from daemon: Get https:\/\/10.10.20.202\/v1\/users\/: dial tcp 10.10.20.202:443: getsockopt: connection refused<\/p>\n<p>6\u3001\u91cd\u542fdocker\u670d\u52a1<\/p>\n<p>service docker restart<\/p>\n<p>7\u3001build\u5e76\u542f\u52a8<br \/>\ndocker-compose up -d<br \/>\n8\u3001\u4ecedocker hub\u4e0a\u4e0b\u8f7dhello-world\u955c\u50cf<br \/>\ndocker run hello-world<br \/>\n9\u3001\u7ed9\u955c\u50cf\u6253\u6807\u7b7e\uff0c\u4ee5\u4fbf\u4e0a\u4f20\u5230\u79c1\u670d\uff0c\u5176\u4e2dlibrary\u662fharbor\u9ed8\u8ba4\u63d0\u4f9b\u7684\u9879\u76ee<br \/>\ndocker tag hello-world 10.10.20.202\/library\/hello-world<br \/>\n10\u3001\u4e0a\u4f20\u955c\u50cf<br \/>\n\u767b\u5f55\u955c\u50cf\u79c1\u670d\uff0c\u6267\u884c\u4ee5\u4e0b\u6307\u4ee4\uff0c\u518d\u8f93\u5165\u7528\u6237\u540d\u548c\u5bc6\u7801<br \/>\ndocker login 10.10.20.202<br \/>\n\u4e0a\u4f20\u955c\u50cf<br \/>\ndocker push 10.10.20.202\/library\/hello-world<br \/>\n11\u3001\u5728\u6d4f\u89c8\u5668\u4e0a\u8bbf\u95ee10.10.20.202\uff0c\u7528\u6237\u540d\uff1aadmin\uff0c\u5bc6\u7801\uff1aHarbor12345\u767b\u5f55\u5b8c\u6210\u540e\uff0c\u70b9\u51fblibrary\u8fd9\u4e2a\u9879\u76ee\uff0c\u5373\u53ef\u770b\u5230\u4e0a\u4f20\u7684hello-world<\/p>\n<p>&nbsp;<\/p>\n<p>\u4ee5\u4e0b\u9644\u5e26harbor\u7684\u542f\u52a8\u3001\u505c\u6b62\u547d\u4ee4<\/p>\n<p>\u3010Build and start Harbor\u3011<\/p>\n<p>$ sudo docker-compose up -d<br \/>\nCreating harbor_log_1<br \/>\nCreating harbor_mysql_1<br \/>\nCreating harbor_registry_1<br \/>\nCreating harbor_ui_1<br \/>\nCreating harbor_proxy_1<\/p>\n<p>\u3010Stop Harbor\u3011<\/p>\n<p>$ sudo docker-compose stop<br \/>\nStopping harbor_proxy_1 &#8230; done<br \/>\nStopping harbor_ui_1 &#8230; done<br \/>\nStopping harbor_registry_1 &#8230; done<br \/>\nStopping harbor_mysql_1 &#8230; done<br \/>\nStopping harbor_log_1 &#8230; done<br \/>\nRestart Harbor after stopping<\/p>\n<p>\u3010Start Harbor\u3011<\/p>\n<p>$ sudo docker-compose start<br \/>\nStarting harbor_log_1<br \/>\nStarting harbor_mysql_1<br \/>\nStarting harbor_registry_1<br \/>\nStarting harbor_ui_1<br \/>\nStarting harbor_proxy_1<br \/>\nRemove Harbor&#8217;s containers while keeping the image data and Harbor&#8217;s database files on the file system:<\/p>\n<p>\u3010\u5220\u9664Harbor\u3011<\/p>\n<p>$ sudo docker-compose rm<br \/>\nGoing to remove harbor_proxy_1, harbor_ui_1, harbor_registry_1, harbor_mysql_1, harbor_log_1<br \/>\nAre you sure? [yN] y<br \/>\nRemoving harbor_proxy_1 &#8230; done<br \/>\nRemoving harbor_ui_1 &#8230; done<br \/>\nRemoving harbor_registry_1 &#8230; done<br \/>\nRemoving harbor_mysql_1 &#8230; done<br \/>\nRemove Harbor&#8217;s database and image data (for a clean re-installation):<\/p>\n<p>$ rm -rf \/data\/database<br \/>\n$ rm -rf \/data\/registry<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1\u3001\u4e0b\u8f7dharbor\uff0c\u5730\u5740https:\/\/github.com\/vmware\/harbor 2\u3001\u8fdb\u5165harbor-master\/Deploy\u76ee\u5f55\uff0c\u4fee\u6539harbor.cfg\u6587\u4ef6\uff0c\u4e3b\u8981\u4fee\u6539\u4ee5\u4e0b\u4fe1\u606f 2.1\u3001hostname =10.10.20.202 \uff08\u8fd9\u4e2a\u662fharbor\u6240\u5728\u670d\u52a1\u5668\u7684ip\uff0c\u4e0d\u80fd\u5199127.0.0.1\uff09 2.2\u3001\u4fee\u6539\u90ae\u7bb1\u76f8\u5173\u4fe1\u606f 3\u3001\u6267\u884c.\/prepare\u547d\u4ee4 4\u3001\u6dfb\u52a0\/etc\/sysconfig\/docker\u6587\u4ef6\uff0c\u6587\u4ef6\u5185\u5bb9\u5982\u4e0b\uff1a OPTIONS=&#8221;&#8211;insecure-registry 10.10.20.202&#8243; 5\u3001\u4fee\u6539\/usr\/lib\/systemd\/system\/docker.service\u6587\u4ef6 5.1\u3001\u65b0\u589e\u4e00\u884c\uff0cEnvironmentFile=-\/etc\/sysconfig\/docker\uff0c\u8be5\u6587\u4ef6\u53ea\u6709\u4e00\u884c\u5185\u5bb9\uff0cOPTIONS=&#8221;&#8211;insecure-registry 10.10.20.202&#8243;\uff0c\u5982\u679c\/usr\/lib\/systemd\/system\/docker.service\u6587\u4ef6\u4e2d\u4e0d\u589e\u52a0EnvironmentFile=-\/etc\/sysconfig\/docker\u8fd9\u884c\uff0c\u4e0b\u9762\u5bf9ExecStart\u7684\u4fee\u6539\u662f\u4e0d\u751f\u6548\u7684\u3002 5.2\u3001\u4fee\u6539\u4e00\u884c\uff0cExecStart=\/usr\/bin\/dockerd $OPTIONS \u4e3a\u4ec0\u4e48\u8981\u4fee\u6539\u8fd9\u4e2a\u914d\u7f6e\u6587\u4ef6\u5462\uff1f&#8211;insecure-registry\u4ee3\u8868\u672c\u5730\u955c\u50cf\u5e93\uff0c\u4fee\u6539\u4e86\u4ee5\u4e0a\u914d\u7f6e\u6587\u4ef6\u540e\u9700\u8981\u91cd\u542fdocker\u670d\u52a1\uff0c\u6b64\u65f6docker login\u65f6\uff0c\u5c06\u8fde\u63a5\u6307\u5b9a\u7684\u672c\u5730\u955c\u50cf\u5e93\u3002 \u5982\u679c\u4e0d\u4fee\u6539\u8fd9\u4e2a\u914d\u7f6e\u6587\u4ef6\uff0c\u5219\u767b\u5f55\u955c\u50cf\u79c1\u670d\u65f6\uff08docker login 10.10.20.202\uff09\u4f1a\u629b\u51fa\u5982\u4e0b\u9519\u8bef [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-408","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts\/408","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=408"}],"version-history":[{"count":0,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts\/408\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=408"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=408"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}