網(wǎng)絡(luò)科技公司 網(wǎng)站建設(shè)百度廣告推廣費(fèi)用
什么是倉(cāng)庫(kù)
倉(cāng)庫(kù)(Repository)是存儲(chǔ)和分發(fā) Docker 鏡像的地方。鏡像倉(cāng)庫(kù)類(lèi)似于代碼倉(cāng)庫(kù),Docker Hub 的命名來(lái)自 GitHub,Github 是我們常用的代碼存儲(chǔ)和分發(fā)的地方。同樣 Docker Hub 是用來(lái)提供 Docker 鏡像存儲(chǔ)和分發(fā)的地方。
談到鏡像倉(cāng)庫(kù),有兩個(gè)需要區(qū)分的概念
- 注冊(cè)服務(wù)器 docker.hub
- 倉(cāng)庫(kù)(具體的項(xiàng)目,類(lèi)似目錄,目錄可以同時(shí)管理多個(gè)鏡像) --jenkins/jenkins
Docker 鏡像發(fā)布到公共倉(cāng)庫(kù)步驟
- 注冊(cè) Docker Hub 賬號(hào) (https://hub.docker.com)
- 創(chuàng)建倉(cāng)庫(kù),新建一個(gè)倉(cāng)庫(kù)用于推送鏡像。
創(chuàng)建倉(cāng)庫(kù)的時(shí)候右邊會(huì)有上傳到倉(cāng)庫(kù)的相關(guān)命令的提示,可以參考記錄一下
- 本地docker login
- 本地docker tag
給本地鏡像打個(gè)tag標(biāo)簽。標(biāo)記本地鏡像,將其歸入某一倉(cāng)庫(kù)。
相當(dāng)于重新復(fù)制鏡像并重命名為docker賬戶(hù)名/倉(cāng)庫(kù)名稱(chēng)。這個(gè)命令其實(shí)就是在我們前面創(chuàng)建倉(cāng)庫(kù)的時(shí)候給的提示的代碼。
- docker push
用registry搭建私有化鏡像倉(cāng)庫(kù)
1.運(yùn)行registry容器
啟動(dòng)命令:
docker run -v /var/lib/registry/data:/var/lib/registry -d -p 5000:5000 --name registry registry:2.7
意味著本地訪問(wèn)通過(guò) http://120.25.253.110:5000
- docker tag
示例
docker tag hello-world:latest 120.25.253.110:5000/hello_world
- docker push
docker push 120.25.253.110:5000/hello_world
用Harbor搭建私有化鏡像倉(cāng)庫(kù)
- 下載安裝包,wget https://github.com/goharbor/harbor/releases/download/v2.1.4/harbor-online-installer-v2.1.4.tgz
- 解壓,tar -zxvf harbor-online-installer-v2.1.4.tgz
- docker compose 安裝
Linux 上我們可以從 Github 上下載它的二進(jìn)制包來(lái)使用,最新發(fā)行的版本地址:https://github.com/docker/compose/releases。
運(yùn)行以下命令以下載 Docker Compose 的當(dāng)前穩(wěn)定版本:
$ sudo curl -L “https://github.com/docker/compose/releases/download/1.24.1/docker-compose-(uname?s)?(uname -s)-(uname?s)?(uname -m)” -o /usr/local/bin/docker-compose
要安裝其他版本的 Compose,請(qǐng)?zhí)鎿Q 1.24.1。
將可執(zhí)行權(quán)限應(yīng)用于二進(jìn)制文件:
$ sudo chmod +x /usr/local/bin/docker-compose
創(chuàng)建軟鏈:
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
測(cè)試是否安裝成功:
$ docker-compose --version
cker-compose version 1.24.1, build 4667896b
- 改配置,修改harbor.yml.tmpl文件名,改為harbor.yml,vi harbor.ym 更改host 和ssl 等
- 域名相關(guān)
如果遇到報(bào)錯(cuò):ERROR:root:Please specify hostname, 那原因是啟動(dòng)harbor時(shí)沒(méi)有修改harbor.yml里的內(nèi)容。
解決辦法
把配置文件中默認(rèn)的hostname: reg.mydomain.com, 改為本地的ip。
比如: hostname:10.6.119.106- 認(rèn)證證書(shū)相關(guān)
如果遇到報(bào)錯(cuò):ERROR:root:Error: The protocol is https but attribute ssl_cert is not set。 原因是harbor.yml中默認(rèn)是配置https的端口及證書(shū)路徑的。
解決辦法
是把這些配置都注釋掉。
#https related config
#https: # 注釋掉
##https port for harbor, default is 443
#port: 443 # 注釋掉
##The path of cert and key files for nginx
#certificate: /your/certificate/path # 注釋掉
#private_key: /your/private/key/path # 注釋掉
- 執(zhí)行.prepare命令,更新配置文件
- 啟動(dòng)Harbor,當(dāng)修改完配置文件后,執(zhí)行./install.sh
- 登錄&使用
初始的默認(rèn)用戶(hù)是admin,密碼是Harbor12345,登錄成功:
推送鏡像到harbor上
- 登錄Harbor倉(cāng)庫(kù):
docker login 120.25.253.110
可能遇到錯(cuò)誤
可以修改本機(jī)Host的/etc/docker/daemon.json,如果沒(méi)有這個(gè)文件,就創(chuàng)建它,并在里面"insecure-registries"的值追加"120.25.253.110",文件內(nèi)容如下List-3.1所示,最重要的是"insecure-registries":[“120.25.253.110”],不然我們login或者推送鏡像到120.25.253.110上時(shí)會(huì)報(bào)錯(cuò)。
{“bip”: “172.172.172.1/24”,“insecure-registries”: [“10.221.128.52”,“120.25.253.110”]}
- 標(biāo)記要推送的鏡像:
docker tag nginx:latest 120.25.253.110/dapengtest/nginx:1.0
如下圖根據(jù)harbor的項(xiàng)目推送提示,標(biāo)記本地鏡像
3. 推送標(biāo)記的鏡像:
docker push 120.25.253.110/dapengtest/nginx:1.0
harbor倉(cāng)庫(kù)查看已經(jīng)推送過(guò)來(lái)