您好,登錄后才能下訂單哦!
創建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 --username=446423587@qq.com 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 --username=446423587@qq.com 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鏡像
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。