配置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私有倉庫

[root@xuegod63 ~]# systemctl start firewalld #因爲後面要使用端口映射

[root@xuegod63 ~]# systemctl enable firewalld

[root@xuegod63 ~]# iptables -F

2、關閉selinux

[root@xuegod63 ~]#  vim /etc/sysconfig/selinux

改:SELINUX = enforcing

爲:SELINUX=disabled

[root@xuegod63 ~]#reboot

[root@xuegod63 ~]# getenforce

Disabled

配置xuegod63爲docker私有倉庫服務端

1.啓動docker

[root@xuegod63 ~]# systemctl start docker

2.拉取registry 鏡像。 registry鏡像中包括搭建本地私有倉庫的軟件:

registry [ˈredʒɪstri] 記錄,登記 ; pull 拉 ; push 推

把registry.tar上傳到Linux上

方法一:導入本地鏡像:

[root@xuegod63 ~]# docker load -i registry.tar

方法二: 在線導入鏡像,比較慢

[root@xuegod63 ~]# 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鏡像

[root@xuegod63 ~]# 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

[root@xuegod63 ~]# docker run -d -p 5000:5000 -v /opt/registry:/var/lib/registry registry

e4698f625a56661edd2678269215ba42d4fa41c2da881768a741a72b4a3d0c60

[root@xuegod63 ~]# ls /opt/registry # 這個目錄會自動創建

[root@xuegod63 ~]# 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

[root@xuegod63 ~]# 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

[root@xuegod64 ~]# yum install docker -y

2.修改docker配置文件,指定docker鏡像加速結點爲:私有倉庫的地址

[root@xuegod64 ~]# 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不安全的註冊

[root@xuegod64 ~]# systemctl restart docker #啓動docker服務

實戰1: 在xuegod64上測試上傳本地鏡像到私有倉庫

1.從Docker HUB 上拉取一個測試鏡像,名字: busybox

方法一:本地導入

上傳busybox.tar鏡像到Linux系統上,作爲測試鏡像。

[root@xuegod64 ~]# docker load -i busybox.tar

[root@xuegod64 ~]# 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

方法二:在線安裝

[root@xuegod64 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

[root@xuegod64 ~]# 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到本地私有倉庫中。

[root@xuegod64 ~]# docker push 192.168.1.63:5000/busybox

4.登錄xuegod64上,查看鏡像的存儲目錄和文件

[root@xuegod63 ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm [root@xuegod63 ~]# tree /opt/registry/docker/registry/v2/

。。。

└── busybox

├── _layers

│ └── sha256

│ ├── 00f017a8c2a6e1fe2ffd05c281f27d069d2a99323a8cd514dd35f228ba26d2ff

│ │ └── link

│ └── 04176c8b224aa0eb9942af765f66dae866f436e75acef028fe44b8a98e045515

│ └── link

查看私有倉庫中的鏡像列表:

http://192.168.1.63:5000/v2/_catalog

實戰2:使用私有倉庫中的鏡像

刪除鏡像:

語法: docker rmi 鏡像名:標籤

[root@xuegod64 ~]# docker rmi 192.168.1.63:5000/busybox #刪除鏡像

[root@xuegod64 ~]# docker pull 192.168.1.63:5000/busybox #下載鏡像

[root@xuegod64 ~]# docker images #查看導入的鏡像

REPOSITORY TAG IMAGE ID CREATED SIZE

192.168.1.63:5000/busybox latest 00f017a8c2a6 2 weeks ago 1.11 MB

使用新導入的鏡像,運行一個新docker實例:

[root@xuegod64 ~]# 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、創建鏡像鏈接或爲基礎鏡像打個標籤

[root@xuegod64 ~]# docker login [email protected] registry.cn-hangzhou.aliyuncs.com # 先登錄到阿里雲registry

Password: 446423587A

Login Succeeded

查看本地鏡像名或ID
[root@xuegod64 ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

。。。

192.168.1.63:5000/busybox latest 00f017a8c2a6 12 months ago 1.11 MB

[root@xuegod64 ~]# docker tag 00f017a8c2a6 registry.cn-hangzhou.aliyuncs.com/xuegod-k8s/busybox:v2

[root@xuegod64 ~]# docker push registry.cn-hangzhou.aliyuncs.com/xuegod-k8s/busybox:v2

在阿里雲上查看:

下載一個鏡像:

[root@xuegod64 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/xuegod-k8s/busybox:v2

總結

10.1 創建docker靜態化IP

10.2 創建docker私有化倉庫

10.3 使用阿里雲私有倉庫存儲自己的docker鏡像

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章