您好,登錄后才能下訂單哦!
這篇文章主要講解了“Docker私有倉庫的搭建方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Docker私有倉庫的搭建方法”吧!
在 Docker 中,當我們執行 docker pull xxx 的時候 ,它實際上是從 registry.hub.docker.com 這個地址去查找,這就是Docker公司為我們提供的公共倉庫。在工作中,我們不可能把企業項目push到公有倉庫進行管理。所以為了更好的管理鏡像,Docker不僅提供了一個中央倉庫,同時也允許我們搭建本地私有倉庫。這一篇介紹registry、harbor兩種私有倉庫搭建。
Docker 官方提供了一個搭建私有倉庫的鏡像 registry ,只需把鏡像下載下來,運行容器并暴露5000端口,就可以使用了。
docker pull registry:2
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:2
Registry服務默認會將上傳的鏡像保存在容器的/var/lib/registry,我們將主機的/opt/registry目錄掛載到該目錄,即可實現將鏡像保存到主機的/opt/registry目錄了。
瀏覽器訪問http://127.0.0.1:5000/v2,出現下面情況說明registry運行正常。
現在通過push鏡像到registry來驗證一下。
查看本地鏡像:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 568c4670fa80 5 weeks ago 109MB ubuntu latest 93fd78260bd1 7 weeks ago 86.2MB elasticsearch 6.5.1 32f93c89076d 7 weeks ago 773MB
要通過docker tag將該鏡像標志為要推送到私有倉庫:
docker tag nginx:latest localhost:5000/nginx:latest
通過 docker push 命令將 nginx 鏡像 push到私有倉庫中:
docker push localhost:5000/nginx:latest
訪問 http://127.0.0.1:5000/v2/_catalog 查看私有倉庫目錄,可以看到剛上傳的鏡像了:
下載私有倉庫的鏡像,使用如下命令:
docker pull localhost:5000/鏡像名:版本號 例如 docker pull localhost:5000/nginx:latest
docker 官方提供的私有倉庫 registry,用起來雖然簡單 ,但在管理的功能上存在不足。 Harbor是一個用于存儲和分發Docker鏡像的企業級Registry服務器,harbor使用的是官方的docker registry(v2命名是distribution)服務去完成。harbor在docker distribution的基礎上增加了一些安全、訪問控制、管理的功能以滿足企業對于鏡像倉庫的需求。
地址:https://github.com/goharbor/harbor/releases 本文是有 v1.2.2
解壓下載的安裝包 harbor-offline-installer-v1.2.2.tgz
tar -xvf harbor-offline-installer-v1.2.2.tgz
修改 harbor.cfg
#hostname 改為本地ip,非 Mac OS系統 可以不指定端口 hostname = 192.168.31.143:9090 #設置secretkey_path 的路徑為 當前目錄的data下 secretkey_path = ./data
需要注意的是,非 Mac 用戶只需要 修改 harbor.cfg 中的 hostname ,就可以直接通過./install.sh 就可以構建鏡像,并把服務啟動起來。不需要 secretkey_path 和 下面 docker-compose.yml 的修改
修改 docker-compose.yml
因為harbor使用了很多目錄掛載,Mac有很多目錄是不允許掛載的,所以如果是Mac用戶,需要修改docker-compose.yml 中的掛載目錄,修改后的 docker-compose.yml 如下:
version: '2' services: log: image: vmware/harbor-log:v1.2.2 container_name: harbor-log restart: always volumes: - ./log/:/var/log/docker/:z ports: - 127.0.0.1:1514:514 networks: - harbor registry: image: vmware/registry:2.6.2-photon container_name: registry restart: always volumes: - ./data/registry:/storage:z - ./common/config/registry/:/etc/registry/:z networks: - harbor environment: - GODEBUG=netdns=cgo command: ["serve", "/etc/registry/config.yml"] depends_on: - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "registry" mysql: image: vmware/harbor-db:v1.2.2 container_name: harbor-db restart: always volumes: - ./data/database:/var/lib/mysql:z networks: - harbor env_file: - ./common/config/db/env depends_on: - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "mysql" adminserver: image: vmware/harbor-adminserver:v1.2.2 container_name: harbor-adminserver env_file: - ./common/config/adminserver/env restart: always volumes: - ./data/config/:/etc/adminserver/config/:z - ./data/secretkey:/etc/adminserver/key:z - ./data/:/data/:z networks: - harbor depends_on: - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "adminserver" ui: image: vmware/harbor-ui:v1.2.2 container_name: harbor-ui env_file: - ./common/config/ui/env restart: always volumes: - ./common/config/ui/app.conf:/etc/ui/app.conf:z - ./common/config/ui/private_key.pem:/etc/ui/private_key.pem:z - ./data/secretkey:/etc/ui/key:z - ./data/ca_download/:/etc/ui/ca/:z - ./data/psc/:/etc/ui/token/:z networks: - harbor depends_on: - log - adminserver - registry logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "ui" jobservice: image: vmware/harbor-jobservice:v1.2.2 container_name: harbor-jobservice env_file: - ./common/config/jobservice/env restart: always volumes: - ./data/job_logs:/var/log/jobs:z - ./common/config/jobservice/app.conf:/etc/jobservice/app.conf:z - ./data/secretkey:/etc/jobservice/key:z networks: - harbor depends_on: - ui - adminserver logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "jobservice" proxy: image: vmware/nginx-photon:1.11.13 container_name: nginx restart: always volumes: - ./common/config/nginx:/etc/nginx:z networks: - harbor ports: - 9090:80 - 443:443 - 4443:4443 depends_on: - mysql - registry - ui - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "proxy" networks: harbor: external: false
通過運行 install.sh 構建鏡像,并把服務啟動起來:
./install.sh
訪問 http://127.0.0.1:9090/ 如下:
默認 admin 用戶的密碼為 Harbor12345 ,可以在 harbor.cfg 進行修改。登錄后如下:
圖中的項目是之前上傳的 ,新部署的 Harbor 登錄后項目下是空的。
可以創建項目,創建用戶,給項目分配用戶等等,操作都很簡單 。
###3. 上傳鏡像
首先登錄私有倉庫,可以使用 admin 用戶 ,也可以使用我們自己創建的具有上傳權限的用戶:
docker login -u admin -p Harbor12345 127.0.0.1:9090
要通過docker tag將該鏡像標志為要推送到私有倉庫,例如:
docker tag nginx:latest 127.0.0.1:9090/library/nginx:latest
上傳鏡像:
docker push 127.0.0.1:9090/library/nginx:latest
訪問 http://127.0.0.1:9090/harbor/projects ,在 library 項目下可以看見剛上傳的 nginx鏡像了:
感謝各位的閱讀,以上就是“Docker私有倉庫的搭建方法”的內容了,經過本文的學習后,相信大家對Docker私有倉庫的搭建方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。