{"id":301,"date":"2018-07-05T17:11:46","date_gmt":"2018-07-05T09:11:46","guid":{"rendered":"https:\/\/blog.espnlol.com\/?p=301"},"modified":"2022-04-20T18:29:24","modified_gmt":"2022-04-20T10:29:24","slug":"harbor%e9%ab%98%e5%8f%af%e7%94%a8%e9%83%a8%e7%bd%b2","status":"publish","type":"post","link":"https:\/\/blog.espnlol.com\/?p=301","title":{"rendered":"Harbor\u9ad8\u53ef\u7528\u90e8\u7f72"},"content":{"rendered":"<p>\u7cfb\u7edf:centos7<br \/>\n\u5185\u6838:Linux 3.10.0-693.el7.x86_64<br \/>\n\u73af\u5883:ceph01(172.16.10.181),ceph02(172.16.10.182)<\/p>\n<p>\u62d3\u6251\u56fe:<\/p>\n<p><a href=\"https:\/\/blog.espnlol.com\/wp-content\/uploads\/2018\/07\/harbor.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-305\" src=\"https:\/\/blog.espnlol.com\/wp-content\/uploads\/2018\/07\/harbor.jpg\" alt=\"\" width=\"1014\" height=\"674\" srcset=\"https:\/\/blog.espnlol.com\/wp-content\/uploads\/2018\/07\/harbor.jpg 1014w, https:\/\/blog.espnlol.com\/wp-content\/uploads\/2018\/07\/harbor-300x199.jpg 300w, https:\/\/blog.espnlol.com\/wp-content\/uploads\/2018\/07\/harbor-768x510.jpg 768w\" sizes=\"auto, (max-width: 1014px) 100vw, 1014px\" \/><\/a><\/p>\n<p>\u6570\u636e\u5e93\u4f7f\u7528\u5916\u63a5\u7684mysql redis\u89e3\u51b3\u540e\u7aef\u6570\u636e\u9ad8\u53ef\u7528\u4ee5\u53casession \u95ee\u9898,ceph\u90e8\u7f72\u8bf7\u53c2\u8003https:\/\/blog.espnlol.com\/?p=279<\/p>\n<p>#\u5b89\u88c5daocker\u73af\u5883<\/p>\n<pre class=\"lang:default decode:true \">yum install docker docker-compose -y\r\n[root@ceph01 harbor]# docker --version\r\nDocker version 1.13.1, build 94f4240\/1.13.1\r\n[root@ceph01 harbor]# docker-compose --version\r\ndocker-compose version 1.9.0, build 2585387<\/pre>\n<p>#\u4e0b\u8f7d\u5e76\u5b89\u88c5harbor-1.5.1<\/p>\n<pre class=\"lang:default decode:true \">\u4f20\u9001\u95e8:https:\/\/github.com\/vmware\/harbor\/releases\r\nwget https:\/\/storage.googleapis.com\/harbor-releases\/release-1.5.0\/harbor-offline-installer-v1.5.1.tgz\r\ntar -xf harbor-offline-installer-v1.5.1.tgz\r\n#\u9ed8\u8ba4\u5b89\u88c5\u5bfc\u51fa\u6570\u636e\u5e93\r\ncd harbor\r\n.\/prepare\r\n.\/install.sh<\/pre>\n<p>#harbor\u6570\u636e\u5bfc\u51fa<\/p>\n<pre class=\"lang:default decode:true\">docker exec -ti 17e8b6e56df0 bash \r\n#\u6570\u636e\u5e93\u7684\u9ed8\u8ba4\u5bc6\u7801\u5728cat common\/config\/adminserver\/env \u4e2d\u67e5\u770b\r\nmysqldump -u root -p --databases registry &gt; registry.sql\r\n#\u9000\u51facontainer,\u5c06\u5907\u4efd\u7684\u6570\u636ecopy \u51fa\u6765\r\ndocker cp 2f2df11a189f:\/registry.sql \/tmp<\/pre>\n<p>#\u5bfc\u5165\u5916\u90e8\u6570\u636e\u5e93<\/p>\n<pre class=\"lang:default decode:true\">#\u6570\u636e\u5e93\u5b89\u88c5\u4f20\u9001\u95e8https:\/\/blog.espnlol.com\/?p=120\r\nmysql -uharbor -h 172.16.10.6 -p\r\nsource \/tmp\/registry.sql\r\ngrant all on registry.* to 'harbor'@'%' IDENTIFIED BY 'harbor';\r\nflush privileges;<\/pre>\n<p>#\u5907\u4efd\u914d\u7f6e\u6587\u4ef6\u5e76\u66f4\u6539\u914d\u7f6e\u6587\u4ef6<\/p>\n<pre class=\"lang:default decode:true\">cp docker-compose.yml docker-compose.yml.bak\r\n\u53bb\u6389mysql\u4ee5\u53caredis\u7684\u955c\u50cf\u5b89\u88c5,\u4ee5\u53ca\u68c0\u6d4b\u5173\u8054\r\nvi docker-compose.yml\r\n'''''''\r\nmysql:\r\nimage: vmware\/harbor-db:v1.5.1\r\ncontainer_name: harbor-db\r\nrestart: always\r\nvolumes:\r\n- \/data\/database:\/var\/lib\/mysql:z\r\nnetworks:\r\n- harbor\r\nenv_file:\r\n- .\/common\/config\/db\/env\r\ndepends_on:\r\n- log\r\nlogging:\r\ndriver: \"syslog\"\r\noptions:\r\nsyslog-address: \"tcp:\/\/127.0.0.1:1514\"\r\ntag: \"mysql\"\r\n'''''''\r\ndepends_on:\r\n- redis (\u4ec5\u53bb\u9664\"- redis\"\u8fd9\u91cc\u65b9\u4fbf\u4e3a\u4e86\u67e5\u627e\u7559\u4e0b\u4e86\u4e00\u5c0f\u6bb5)\r\n- ui\r\n- adminserver\r\n''''''' \r\nredis:\r\nimage: vmware\/redis-photon:v1.5.1\r\ncontainer_name: redis\r\nrestart: always\r\nvolumes:\r\n- \/data\/redis:\/data\r\nnetworks:\r\n- harbor\r\ndepends_on:\r\n- log\r\nlogging:\r\ndriver: \"syslog\"\r\noptions:\r\nsyslog-address: \"tcp:\/\/127.0.0.1:1514\"\r\ntag: \"redis\"\r\n'''''''\r\ndepends_on:\r\n- mysql (\u4ec5\u53bb\u9664\"- mysql\"\u8fd9\u91cc\u65b9\u4fbf\u4e3a\u4e86\u67e5\u627e\u7559\u4e0b\u4e86\u4e00\u5c0f\u6bb5)\r\n- registry\r\n- ui\r\n- log\r\n'''''''\r\n\r\n#\u4fee\u6539harbor\u5f15\u5165\u7684\u73af\u5883\u53d8\u91cf\r\nvi common\/templates\/adminserver\/env\r\nMYSQL_HOST=$mysqlip\r\nMYSQL_PORT=3306\r\nMYSQL_USR=harbor\r\nMYSQL_PWD=harbor \r\n# \u8fd9\u91cc\u4e0d\u9700\u8981\u4fee\u6539\u5bc6\u7801\uff0c\u76f4\u63a5\u5728harbor.cfg \u4e2d\u4fee\u6539db_password \u5bc6\u7801\uff0c\u7136\u540e\u4f20\u5165\u53d8\u91cf\u8fdb\u6765 \r\nRESET=true\r\n\r\n#\u4fee\u6539redis\r\nvim common\/templates\/ui\/env \u5c06\u9ed8\u8ba4\u66ff\u6362\u6210\u4e0b\u9762\u7684\r\n_REDIS_URL=reids_ip:port,100,redis_password,0\r\n_REDIS_URL=$redsip:6379,100,$passwd,0\r\n\r\n#\u4fee\u6539\u914d\u7f6eharbor.conf\r\nvim harbor.cf\r\n''''''\r\nhostname 172.16.10.181\r\n''''''\r\n#The address of the Harbor database. Only need to change when using external db.\r\ndb_host = $mysqlip\r\n#The password for the root user of Harbor DB. Change this before any production use.\r\ndb_password = harbor\r\n#The port of Harbor database host\r\ndb_port = 3306\r\n#The user name of Harbor database\r\ndb_user = harbor\r\n''''''\r\n#The redis server address. Only needed in HA installation.\r\n#address:port[,weight,password,db_index]\r\nredis_url = $redisip:6379,100,$passwd,0\r\n''''''\r\n\r\n#\u5b89\u88c5harbor\r\n.\/prepare \r\n.\/install.sh<\/pre>\n<p>#\u5728\u5176\u4ed6\u673a\u5668\u4e0a\u5b89\u88c5harbor<\/p>\n<pre class=\"lang:default decode:true\">#\u6253\u5305\u5df2\u7ecf\u7f16\u8f91\u597d\u7684harbor\r\ntar -zcf harbor.tar.gz harbor\r\n#\u4f20\u5230\u5176\u4ed6\u8bbe\u5907\u4e0a\r\ntar -xf harbor.tar.gz\r\ncd harbor\r\n.\/prepare \r\n.\/install.sh<\/pre>\n<p>#\u5728LB\u4e0a\u6dfb\u52a0\u4e24\u53f0\u670d\u52a1\u5668,\u5e76\u8bbe\u7f6e\u6210ip hash\u89e3\u6790,\u5df2\u907f\u514dsession \u8ba4\u8bc1\u95ee\u9898<\/p>\n<p>#\u5f00\u542fSSL\u767b\u9646<\/p>\n<p>#\u9996\u5148\u7533\u8bf7\u4e00\u4e2a\u514d\u8d39\u7684\u6cdb\u57df\u540d\u8bc1\u4e66,\u4f20\u9001\u95e8:https:\/\/blog.espnlol.com\/?p=143<br \/>\n#\u4fee\u6539harbor.cfg<\/p>\n<pre class=\"lang:default decode:true \">vi harbor.cfg\r\n''''''\r\n#The protocol for accessing the UI and token\/notification service, by default it is http.\r\n#It can be set to https if ssl is enabled on nginx.\r\nui_url_protocol = https\r\n''''''\r\n#The path of cert and key files for nginx, they are applied only the protocol is set to https\r\nssl_cert = \/data\/cert\/fullchain1.pem\r\nssl_cert_key = \/data\/cert\/privkey1.pem\r\n''''''''\r\n\r\n\u5c06\u8bc1\u4e66\u4fe1\u606f\u4f20\u5bfc\/data\/cert\/\u4e0b\u5373\u53ef\r\n\r\n.\/prepare\r\n.\/install.sh\r\n<\/pre>\n<p>\u9519\u8bef\u89e3\u51b3:<\/p>\n<p>ERROR: Service &#8216;jobservice&#8217; depends on service &#8216;redis&#8217; which is undefined.<\/p>\n<p>ERROR: Service &#8216;jobservice&#8217; depends on service &#8216;mysql&#8217; which is undefined.<\/p>\n<p>\u53d1\u751f\u4e0a\u8ff0\u95ee\u9898,\u662f\u7531\u4e8e\u5220\u9664\u4e86mysql\u7ea7redis\u4e24\u4e2a\u955c\u50cf\u4e4b\u540e,\u8fd8\u6709\u4f9d\u8d56\u68c0\u6d4b<\/p>\n<p>depends_on:<br \/>\n&#8211; mysql (\u4ec5\u53bb\u9664&#8221;- mysql&#8221;\u8fd9\u91cc\u65b9\u4fbf\u4e3a\u4e86\u67e5\u627e\u7559\u4e0b\u4e86\u4e00\u5c0f\u6bb5)<br \/>\n&#8211; registry<br \/>\n&#8211; ui<br \/>\n&#8211; log<\/p>\n<p>depends_on:<br \/>\n&#8211; redis (\u4ec5\u53bb\u9664&#8221;- redis&#8221;\u8fd9\u91cc\u65b9\u4fbf\u4e3a\u4e86\u67e5\u627e\u7559\u4e0b\u4e86\u4e00\u5c0f\u6bb5)<br \/>\n&#8211; ui<br \/>\n&#8211; adminserver<\/p>\n<p>\u5220\u9664\u6389mysql\u548credis\u7684\u4f9d\u8d56\u5c31\u6ca1\u95ee\u9898\u4e86<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7cfb\u7edf:centos7 \u5185\u6838:Linux 3.10.0-693.el7.x86_6 &hellip; <a href=\"https:\/\/blog.espnlol.com\/?p=301\">\u7ee7\u7eed\u9605\u8bfb <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-301","post","type-post","status-publish","format-standard","hentry","category-k8s"],"_links":{"self":[{"href":"https:\/\/blog.espnlol.com\/index.php?rest_route=\/wp\/v2\/posts\/301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espnlol.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espnlol.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espnlol.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espnlol.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=301"}],"version-history":[{"count":3,"href":"https:\/\/blog.espnlol.com\/index.php?rest_route=\/wp\/v2\/posts\/301\/revisions"}],"predecessor-version":[{"id":311,"href":"https:\/\/blog.espnlol.com\/index.php?rest_route=\/wp\/v2\/posts\/301\/revisions\/311"}],"wp:attachment":[{"href":"https:\/\/blog.espnlol.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espnlol.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espnlol.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}