1. 程式人生 > >配置docker私有倉庫

配置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]

~]# systemctl start docker

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映象