配置docker私有倉庫
建立docker私有化倉庫
有時候使用Docker Hub這樣的公共倉庫可能不方便(有時候無法訪問),使用者可以建立一個本地倉庫供私人使用,這裡使用官方提供的工具docker-registry來配置私有庫
1、使用官方提供的工具來配置
docker-registry 是官方提供的工具,可以用於構建私有的映象倉庫。
registry [ˈredʒɪstri] 記錄,登記
私有倉庫好處:
1、節約頻寬
2、可以自己定製系統
docker-registry這個工具是一個映象,直接下載並使用registry映象啟動docker例項就可以了。
有了docker以後,所有軟體不再以office.exe 或lrzsz.rpm 形式釋出,而以docker映象釋出。你只需要下載docker映象並執行一個docker例項。
有了docker以後,再也不用為安裝linux服務而發愁!
實驗環境:
docker私有倉庫地址:192.168.1.63
docker伺服器地址 : 192.168.1.64 ,xuegod64會使用xuegod63上docker私有倉庫來pull/push映象
實驗拓撲圖:
配置xuegod63為docker私有倉庫
[[email protected] ~]# systemctl start firewalld #因為後面要使用埠對映
[[email protected] ~]# systemctl enable firewalld
[[email protected] ~]# iptables -F
2、關閉selinux
[[email protected] ~]# vim /etc/sysconfig/selinux
改:SELINUX = enforcing
為:SELINUX=disabled
[[email protected] ~]#reboot
[[email protected] ~]# getenforce
Disabled
配置xuegod63為docker私有倉庫服務端
1.啟動docker
[[email protected]
2.拉取registry 映象。 registry映象中包括搭建本地私有倉庫的軟體:
registry [ˈredʒɪstri] 記錄,登記 ; pull 拉 ; push 推
把registry.tar上傳到Linux上
方法一:匯入本地映象:
[[email protected] ~]# docker load -i registry.tar
方法二: 線上匯入映象,比較慢
[[email protected] ~]# docker pull registry
Using default tag: latest
Trying to pull repository docker.io/library/registry ...
latest: Pulling from docker.io/library/registry
。。。
acf34ba23c50: Waiting
error pulling image configuration: Get https://dseasb33srnrn.cloudfront.net/registry-v2/docker/registry/v2/blobs/sha256/13/136c8b16df203ef26b2f39e24bd3f403b63be67610ec99a5b5af0cceac5c1b51/data?Expires=1491661458&Signature=VpBWJnckUbRqJol8EWTw2ZswQ-xOjrbqDfUstwjJwA55NoaOlESDpUC2AOloQXQRXx~F7-DGwaOY4bjJpdymnVhyv5ylO2ZB1tlkgANsNYhyoKOSyT8IycW94Cee~GaXqdcwkdECsLqWbRW1S297k4jK2GXTtaZqUsBrrmx3oAQ_&Key-Pair-Id=APKAJECH5M7VWIS5YZ6Q: EOF
注: 這是因為訪問不了國外的網址導致的。
解決:多再試試幾次, 終於一次,你不會被牆,可以訪問成功的。
擴充套件:下載registry映象時,有時會訪問不到國外網站,導致下載失敗
3.檢視registry映象
[[email protected] ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/registry latest 047218491f8c 3 weeks ago 33.17 MB
擴充套件:.io域名
.io 是[british indian ocean territory] 英屬印度洋領地的簡寫
4. 實戰:使用registry映象搭建一個私有倉庫
使用registry映象搭建一個私有倉庫。 registry映象中已經把搭建私有庫程式安裝好了,我只需要使用registry映象執行一個docker例項就可以了。
預設情況下,Registry程式的存放映象資訊的目錄是/var/lib/registry目錄下,這樣如果容器被刪除,則存放於容器中的映象也會丟失,所以我們一般情況下會指定本地物理機一個目錄如/opt/registry掛載到容器的/var/lib/registry下,這樣兩個目錄下都有!
注:registry執行的例項的預設儲存路徑是/var/lib/registry,只是個臨時目錄,一段時間之後就會消失。所以使用-v引數,指定本地持久的路徑。
registry服務監聽到埠號,預設是5000
[[email protected] ~]# docker run -d -p 5000:5000 -v /opt/registry:/var/lib/registry registry
e4698f625a56661edd2678269215ba42d4fa41c2da881768a741a72b4a3d0c60
[[email protected] ~]# ls /opt/registry # 這個目錄會自動建立
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e4698f625a56 docker.io/registry "/entrypoint.sh /etc/" 7 minutes ago Up 6 minutes 0.0.0.0:5000->5000/tcp suspicious_colden
[[email protected] ~]# netstat -antup | grep 5000
tcp6 0 0 :::5000 :::* LISTEN 4032/docker-proxy
說明,私有庫已經啟動成功。
檢視私有倉庫中的映象列表:
http://192.168.1.63:5000/v2/_catalog #發現,現在還是空的
5.在xuegod64上搭建docker服務並使用私有倉庫
開啟CENTOS7.4-64-64虛擬機器:
1.線上安裝docker
[[email protected] ~]# yum install docker -y
2.修改docker配置檔案,指定docker映象加速結點為:私有倉庫的地址
[[email protected] ~]# vim /etc/sysconfig/docker
修改此行
改:4 OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'
為:OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry 192.168.1.63:5000'
注:新增紅色標記文字。 --insecure-registry不安全的註冊
[[email protected] ~]# systemctl restart docker #啟動docker服務
實戰1: 在xuegod64上測試上傳本地映象到私有倉庫
1.從Docker HUB 上拉取一個測試映象,名字: busybox
方法一:本地匯入
上傳busybox.tar映象到Linux系統上,作為測試映象。
[[email protected] ~]# docker load -i busybox.tar
[[email protected] ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/busybox latest 00f017a8c2a6 2 weeks ago 1.11 MB
docker.io/registry latest 047218491f8c 3 weeks ago 33.17 MB
注:
BusyBox 概述: BusyBox是一個集成了一百多個最常用Linux命令和工具的軟體。BusyBox 包含了BusyBox 包含了一些簡單的工具,例如ls、cat和echo等等,還包含了一些更大、更復雜的工具,例grep、find、mount以及telnet。有些人將 BusyBox 稱為 Linux 工具裡的瑞士×××。簡單的說BusyBox就好像是個大工具箱,它整合壓縮了 Linux 的許多工具和命令,也包含了 Android 系統的自帶的shell。
瑞士×××見過:1 沒有:2
官網: ×××w.busybox.net
方法二:線上安裝
[[email protected] opt]# docker pull busybox
Using default tag: latest
Trying to pull repository docker.io/library/busybox ...
latest: Pulling from docker.io/library/busybox
實驗拓撲圖:
2、建立映象連結或為基礎映象打個標籤(複製一個映象並起一個名字)
語法: docker tag 映象名:標籤 私有倉庫地址/映象名:標籤
# docker tag docker.io/busybox:latest 192.168.1.63:5000/busybox:latest
注: 不寫映象標籤,預設是:latest
[[email protected] ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.63:5000/busybox latest 00f017a8c2a6 2 weeks ago 1.11 MB
3、將剛新打好標籤的192.168.1.63:5000/busybox映象,push到本地私有倉庫中。
[[email protected] ~]# docker push 192.168.1.63:5000/busybox
4.登入xuegod64上,檢視映象的儲存目錄和檔案
[[email protected] ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm [[email protected] ~]# tree /opt/registry/docker/registry/v2/
。。。
└── busybox
├── _layers
│ └── sha256
│ ├── 00f017a8c2a6e1fe2ffd05c281f27d069d2a99323a8cd514dd35f228ba26d2ff
│ │ └── link
│ └── 04176c8b224aa0eb9942af765f66dae866f436e75acef028fe44b8a98e045515
│ └── link
檢視私有倉庫中的映象列表:
http://192.168.1.63:5000/v2/_catalog
實戰2:使用私有倉庫中的映象
刪除映象:
語法: docker rmi 映象名:標籤
[[email protected] ~]# docker rmi 192.168.1.63:5000/busybox #刪除映象
[[email protected] ~]# docker pull 192.168.1.63:5000/busybox #下載映象
[[email protected] ~]# docker images #檢視匯入的映象
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.63:5000/busybox latest 00f017a8c2a6 2 weeks ago 1.11 MB
使用新匯入的映象,執行一個新docker例項:
[[email protected] ~]# docker run 192.168.1.63:5000/busybox:latest echo "hello"
hello
執行成功。
總結
搭建私有倉庫步驟:
1、把registry映象匯入docker
2、基於registry映象執行一個docker例項,registry預設監聽5000埠
匯入映象到私有倉庫步驟:
1、安裝docker服務
2、修改docker 服務 映象源,改成私有倉庫地址: --insecure-registry 192.168.1.63:5000
3、把要匯入的映象打個標籤如: 192.168.1.63:5000/busybox:latest
4、上傳打了標籤的映象到私有倉庫: docker push 192.168.1.63:5000/busybox:latest
私有倉庫的使用:
1、修改docker 服務 映象源,改成私有倉庫地址: --insecure-registry 192.168.1.63:5000
2、下載剛才上傳的映象 : docker pull 192.168.1.63:5000/busybox:latest
10.3 使用阿里雲私有倉庫儲存自己的docker映象
10.3.1 使用阿雲的docker私有倉庫
1、登入阿里雲開者平臺
https://dev.aliyun.com/search.html ,在此頁面中點選“建立名稱空間”
建立映象倉庫:
然後,選擇當前頁面中的:
點管理,檢視使用方法:
登入阿里雲docker registry:
$ sudo docker login [email protected] registry.cn-hangzhou.aliyuncs.com
登入registry的使用者名稱是您的阿里雲賬號全名,密碼是您開通服務時設定的密碼。
我的密碼是: 446423587A
你可以在映象管理首頁點選右上角按鈕修改docker login密碼。
https://cr.console.aliyun.com/?spm=5176.1971733.2.28.4884464bqVSUpv#/imageList
登入xuegod64將本地映象推送到阿里雲registry:
1、建立映象連結或為基礎映象打個標籤
[[email protected] ~]# docker login [email protected] registry.cn-hangzhou.aliyuncs.com # 先登入到阿里雲registry
Password: 446423587A
Login Succeeded
檢視本地映象名或ID
[[email protected] ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
。。。
192.168.1.63:5000/busybox latest 00f017a8c2a6 12 months ago 1.11 MB
[[email protected] ~]# docker tag 00f017a8c2a6 registry.cn-hangzhou.aliyuncs.com/xuegod-k8s/busybox:v2
[[email protected] ~]# docker push registry.cn-hangzhou.aliyuncs.com/xuegod-k8s/busybox:v2
在阿里雲上檢視:
下載一個映象:
[[email protected] ~]# docker pull registry.cn-hangzhou.aliyuncs.com/xuegod-k8s/busybox:v2
總結:
10.1 建立docker靜態化IP
10.2 建立docker私有化倉庫
10.3 使用阿里雲私有倉庫儲存自己的docker映象