docker筆記37-docker私有倉庫的搭建
docker-registry的部署
檢視docker-registry版本資訊:
[root@docker-registry ~]# yum info docker-registry Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.bit.edu.cn * extras: mirror.bit.edu.cn * updates: mirror.bit.edu.cn Available Packages Name : docker-registry Arch : x86_64 Version : 0.9.1 Release : 7.el7 Size : 123 k Repo : extras/7/x86_64 Summary : Registry server for Docker URL : License : ASL 2.0 Description : Registry server for Docker (hosting/delivering of repositories and images).
安裝docker-registry:
[root@docker-registry ~]# yum -y install docker-registry
檢視安裝後docker-distribution的的配置檔案位置
[root@docker-registry ~]# rpm -ql docker-distribution /etc/docker-distribution/registry/config.yml /usr/bin/registry /usr/lib/systemd/system/docker-distribution.service /usr/share/doc/docker-distribution-2.6.2 /usr/share/doc/docker-distribution-2.6.2/AUTHORS /usr/share/doc/docker-distribution-2.6.2/CONTRIBUTING.md /usr/share/doc/docker-distribution-2.6.2/LICENSE /usr/share/doc/docker-distribution-2.6.2/MAINTAINERS /usr/share/doc/docker-distribution-2.6.2/README.md /var/lib/registry #資料放在這個目錄下,可以修改/etc/docker-distribution/registry/config.yml改這個路徑
檢視配置檔案:
[root@docker-registry ~]# cat /etc/docker-distribution/registry/config.yml version: 0.1 log: fields: service: registry storage: cache: layerinfo: inmemory filesystem: rootdirectory: /var/lib/registry #映象儲存位置,可以修改成自己的 http: addr: :5000 #監聽埠為5000
啟動服務:
[root@docker-registry ~]# systemctl start docker-distribution [root@docker-registry ~]# systemctl enable docker-distribution Created symlink from /etc/systemd/system/multi-user.target.wants/docker-distribution.service to /usr/lib/systemd/system/docker-distribution.service.
這樣我們就裝好了docker-registry。
下面我們測試,把node3機器上的映象推到docker-registry機器上。
[root@k8s-node3 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7.22 6bb891430fb6 3 months ago 372 MB
我們準備把node3上的mysql:5.7.22映象推到docker-registry機器上,需要先給node3機器上的映象mysql打標籤:
[root@k8s-node3 ~]# docker tag mysql:5.7.22 docker-registry:5000/mysql:5.7.22
[root@k8s-node3 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker-registry.com:5000/mysql 5.7.22 6bb891430fb6 3 months ago 372 MB
注意,docker-registry是主機名,要用hosts檔案解析到對應的registryip地址上。
[root@k8s-node3 ~]# docker push docker-registry:5000/mysql:5.7.22 The push refers to a repository [docker-registry:5000/mysql] Get
注意:如果上面寫作docker-registry:5000/mysql,說明推送的是mysql頂級倉庫下所有的映象版本。
上面看到,我們docker push 時報錯了,這是因為docker 客戶端預設使用的https形式的,但是dockr registry server端是http形式的。
如果我們實在就用http的,那就需要對docker 客戶端做如下修改:
[root@k8s-node3 ~]# vim /etc/docker/daemon.json { "registry-mirrors": ["], "insecure-registries": ["docker-registry:5000"] }
注意,上面的dokcer-registry是主機名。
[root@k8s-node3 ~]# systemctl restart docker
然後再推就能推上去了。
[root@k8s-node3 ~]# docker push docker-registry:5000/mysql:5.7.22 The push refers to a repository [docker-registry:5000/mysql] a968f24d4187: Pushed f8cb294d5d80: Pushed 489bddb9c55e: Pushed 22b402e93939: Pushed 8aeebb3964c1: Pushed 94f8d8f5acbf: Pushed c0c26734fb83: Pushed 4801a487d51a: Pushed aae63f31dee9: Pushed 6f8d38b0e2b6: Pushed cdb3f9544e4c: Pushed 5.7.22: digest: sha256:1d3119703eb04855c971a9ec24646184444fa1bd889b201de3ce8904c35eb627 size: 2621
然後,我們登入到docker registry伺服器,就能看到推送過來的映象了:
[root@docker-registry ~]# ll /var/lib/registry/docker/registry/v2/repositories/mysql/ total 0 drwxr-xr-x. 3 root root 20 Oct 25 05:13 _layers drwxr-xr-x. 4 root root 35 Oct 25 05:14 _manifests drwxr-xr-x. 2 root root 6 Oct 25 05:14 _uploads
下面我們就讓其他伺服器從docker-registry伺服器上下載映象。
首先也需要在其他伺服器上更改docker配置,加個"insecure-registries"引數,如下:
[root@k8s-node1 ~]# cat /etc/docker/daemon.json { "registry-mirrors": ["], "insecure-registries": ["docker-registry:5000"] }
[root@k8s-node1 ~]# systemctl restart docker
然後在這個機器上下載docker-registry機器上的映象:
[root@k8s-node1 ~]# docker pull docker-registry:5000/mysql:5.7.22 5.7.22: Pulling from mysql 2da35ff30a7d: Pull complete 46459f75a599: Pull complete fe071c86fe94: Pull complete 75457c650197: Pull complete 6506db22c932: Pull complete a6e0a2acd728: Pull complete 3182738b1913: Pull complete ea75bfdf07be: Pull complete 6b85e8810885: Pull complete 5dca51ac89bd: Pull complete b3400d337f49: Pull complete Digest: sha256:1d3119703eb04855c971a9ec24646184444fa1bd889b201de3ce8904c35eb627 Status: Downloaded newer image for docker-registry:5000/mysql:5.7.22
[root@k8s-node1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat latest 05af71dd9251 8 days ago 463 MB docker-registry:5000/mysql 5.7.22 6bb891430fb6 3 months ago 372 MB
看到下載的映象就是我們私有倉庫裡面的。
harbor的部署
我們看到上面搭建的docker私有倉庫是命令列介面的,很醜陋。不過,好訊息是,目前有個開源專案叫harbor,是在docker registry基礎上做的,並帶了個漂亮的web介面,還支援冗餘等。是個非常不錯的專案。另外,CNCF組織也非常青睞harbor,可見harbor的前景非常不錯。
可是,harbor的部署是非常麻煩的。還好,現在可以用docker compose(單機編排工具)來做harbor的安裝。
下面我們準備安裝harbor試一下。
官方專案地址是:
官方安裝文件:
harbor官方要求配置為:
Software | Version | Description |
---|---|---|
Python | version 2.7 or higher | Note that you may have to install Python on Linux distributions (Gentoo, Arch) that do not come with a Python interpreter installed by default |
Docker engine | version 1.10 or higher | For installation instructions, please refer to: |
Docker Compose | version 1.6.0 or higher | For installation instructions, please refer to: |
Openssl | latest is preferred | Generate certificate and keys for Harbor |
先安裝epel源。
[root@harbor yum.repos.d]# cd /etc/yum.repos.d/ [root@harbor yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo
看epel裡面的docker-compose版本情況:
[root@docker-registry yum.repos.d]# yum info docker-compose epel 12742/12742 Available Packages Name : docker-compose Arch : noarch Version : 1.18.0 Release : 1.el7 Size : 226 k Repo : epel/x86_64 Summary : Multi-container orchestration for Docker URL : License : ASL 2.0
登入
我們下載二進位制的安裝包:
[root@harbor ~]# wget
[root@harbor ~]# tar -xvf harbor-offline-installer-v1.6.1.tgz -C /usr/local/
編輯配置檔案:
[root@harbor ~]# cd /usr/local/harbor/
[root@docker-registry harbor]# vim harbor.cfg hostname = 172.16.22.196 #harbor伺服器的名稱,可以是IP地址(本機ip),或者是完整的域名,不要使用localhost或者127.0.0.1,因為服務需要被其他的機器訪問 ui_url_protocol = http max_job_workers = 10 #小於作業系統的cpu個數 harbor_admin_password = Harbor12345 #admin的密碼
停止我們前面安裝的docker-distribution
[root@harbor harbor]# systemctl stop docker-distribution
安裝docker-compose
[root@docker-registry harbor]# yum install docker-compose
安裝docker:
[root@harbor harbor]#yum intall docker-ce [root@harbor harbor]# systemctl start docker
安裝harbor:
[root@harbor harbor]# ./prepare [root@harbor harbor]# ./install.sh [Step 0]: checking installation environment ... Note: docker version: 18.06.1 Note: docker-compose version: 1.18.0
安裝過程時間比較長,原因是它需要展開harbor.v1.6.1.tar.gz映象,並安裝這些映象。
安裝完後,訪問
登入後,我們建立一個普通使用者:
建立一個專案:
備註:上面的複製管理就是用來給harbor做主從複製的。
然後以普通使用者登入,並建立一個專案:
我們登入另外一個機器node03當做客戶端,然後在這個機器上修改客戶端以http方式訪問harbor server(我這裡ip是172.16.22.196):
[root@k8s-node3 ~]# vim /etc/docker/daemon.json { "registry-mirrors": ["], "insecure-registries": ["172.16.22.196"] }
[root@k8s-node3 ~]# systemctl daemon-reload [root@k8s-node3 ~]# systemctl restart docker
然後給node3的映象打標籤,打成harbor主機名形式:
[root@k8s-node3 ~]# docker tag mysql:5.7.22 172.16.22.196/dev/mysql:5.7.22
在node3機器上,登入docker-registry(172.16.22.196)
[root@k8s-node3 ~]# docker login 172.16.22.196 Username: chenzhixin Password: Login Succeeded
把node3上的映象推送到harbor server172.16.22.196上:
[root@k8s-node3 ~]# docker push 172.16.22.196/dev/mysql #不加標籤標示把mysql下所有標籤的映象都推送到harbor上 The push refers to a repository [172.16.22.196/dev/mysql] a968f24d4187: Pushed f8cb294d5d80: Pushed 489bddb9c55e: Pushed 22b402e93939: Pushed 8aeebb3964c1: Pushed 94f8d8f5acbf: Pushed c0c26734fb83: Pushed 4801a487d51a: Pushed aae63f31dee9: Pushed 6f8d38b0e2b6: Pushed cdb3f9544e4c: Pushed 5.7.22: digest: sha256:1d3119703eb04855c971a9ec24646184444fa1bd889b201de3ce8904c35eb627 size: 2621
然後我們就能在harbor server上看到我們推送的映象了:
Harbor容器的stop與start:
進入Harbor目錄執行如下命令即可: cd /usr/local/harbor docker-compose stop/start
其他補充知識:
/usr/local/harbor/docker-compose.yml :這個檔案裡面定義了資料存放的目錄是:/data
[root@harbor harbor]# ls /data/ ca_download config database job_logs psc redis registry secretkey
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28916011/viewspace-2217466/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- docker 私有倉庫搭建Docker
- docker搭建私有倉庫Docker
- 【Harbor學習筆記】-教你快速搭建Docker私有倉庫筆記Docker
- 用Docker搭建cnpm私有倉庫以及私有倉庫的使用DockerNPM
- Docker搭建Harbor私有倉庫Docker
- Docker入門-搭建docker私有倉庫Docker
- Docker-------私有倉庫 Harbor 的搭建Docker
- Docker倉庫之Registry私有映象倉庫的搭建與使用Docker
- Docker搭建私有倉庫Registry&HarborDocker
- docker使用容器搭建本地私有倉庫Docker
- Docker基礎-搭建本地私有倉庫Docker
- 使用 docker + verdaccio 搭建npm私有倉庫DockerNPM
- 私有Docker倉庫Docker
- 手把手教你搭建Docker私有倉庫HarborDocker
- NPM 私有倉庫的搭建NPM
- Docker建立私有倉庫Docker
- Docker信任私有倉庫Docker
- 搭建python私有倉庫Python
- gitlab私有倉庫搭建Gitlab
- Docker registry私有倉庫(七)Docker
- Dockerfile指令與Docker-compose容器編排-搭建docker私有倉庫Docker
- 微服務探索之路03篇-docker私有倉庫Harbor搭建+Kubernetes(k8s)部署私有倉庫的映象微服務DockerK8S
- 搭建私有的Composer倉庫
- Docker私有倉庫之Harbor神器Docker
- 《Git團隊協作》之Docker快速搭建GitLab私有倉庫DockerGitlab
- Docker 離線安裝 & 離線私有倉庫搭建總結Docker
- Linux搭建私有軟體倉庫Linux
- 使用verdaccio 搭建npm私有倉庫NPM
- 使用 SVN 搭建 Composer 私有倉庫
- 使用verdaccio搭建私有npm倉庫NPM
- docker學習筆記(2)- 倉庫Docker筆記
- Docker搭建官方私有倉庫registry及相關配置(推薦registry)Docker
- 程式設計師都在學的docker--搭建harbor私有倉庫與管理程式設計師Docker
- Jenkins打Docker映象推送到私有倉庫JenkinsDocker
- Docker--harbor私有倉庫部署與管理Docker
- docker學習及專案應用實戰(五搭建自己的私有倉庫)Docker
- Docker官方私有倉庫registry的安裝和使用Docker
- docker搭建私人git倉庫DockerGit