1. 介紹
1.1 介紹
要學習docker首先要學會管理docker鏡像,docker鏡像的擷取方式包括:
- 官方拉取(pull)
- 導出/導入(export/import)
- 儲存/加載(save/load)
- Dockerfile
這裡面大家最常用的方式還是官方拉取,但是官方鏡像源的伺服器在美國,我們這邊下載下傳速度沒法保證。即便用了很多國内的鏡像源的伺服器,穩定性還是得不到保證。最好的辦法就是把鏡像放到本地,這樣就可以放心使用了~
要把鏡像存在本地伺服器上就需要搭建docker私有倉庫registry服務,福哥今天就要在TFCentOS7x64伺服器上搭建一個registry服務,一起來吧~~
1.2 環境
鏡像版本 | registry:2.8 |
服務IP | 192.168.168.68 |
服務端口 | 5000 |
SSL | 無 |
認證 | 無 |
作業系統 | CentOS 7 x86_64 2009 |
伺服器 | TFCentOS7x64 |
IP | 192.168.168.68 |
2. 安裝
2.1 設定國内鏡像源
這個直接從美國docker鏡像伺服器下載下傳鏡像實在太慢了,動不動就卡住一動不動。為了解決這個問題,福哥決定先把國内鏡像源添加進來,讓docker盡可能地從國内鏡像伺服器下載下傳,提高速度!
設定docker國内鏡像源的方法就是在/etc/docker/daemon.json裡面添加registry-mirrors設定。
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
]
}
設定完了需要重新開機docker服務才能生效!
systemctl restart docker
重新開機完了使用docker info看看我們設定的國内鏡像源是不是生效了!
docker info
2.2 選擇鏡像
registry服務本身也是基于docker部署的,registry鏡像的位址如下:
https://hub.docker.com/_/registry/tags
鏡像版本2.8:
2.3 拉取鏡像
使用如下的指令拉取registry鏡像。
docker pull registry:2.8
2.4 修改鏡像标簽
使用docker tag把registry:2.8鏡像改成registry.tongfu.net:5000私有倉庫下的。
docker tag registry:2.8 registry.tongfu.net:5000/registry:2.8
docker rmi registry:2.8
使用docker images檢視一下改玩的鏡像名稱包含registry.tongfu.net:5000了。
docker images
2.5 持久化目錄
建立私有倉庫的持久化目錄/tongfu.net/data/docker/data/registry。
mkdir -p /tongfu.net/data/docker/data/registry
2.6 啟動容器
啟動registry容器,取名registry,總是自動啟動,綁定主機IP位址192.168.168.68上的5000端口,映射前面建立的持久化目錄。
docker run -tid \
--name registry \
-h registry \
--restart always \
-p 192.168.168.68:5000:5000 \
-v /tongfu.net/data/docker/data/registry:/var/lib/registry \
registry.tongfu.net:5000/registry:2.8
2.7 本地dns解析
建立本地dns解析記錄,将192.168.168.68解析到registry.tongfu.net上面,通過域名操作私有倉庫registry更友善。
192.168.168.68 registry.tongfu.net
2.8 解決HTTPS問題
預設情況下私有倉庫是在HTTPS下使用的,但是HTTPS是需要SSL證書的,咱們沒那個進階貨(其實是福哥懶得去搞,以後會教給大家哈),是以要解決這個強制HTTPS的問題。
docker可以通過/etc/docker/daemon.json進行一些配置,要解決HTTPS的問題就要在這個裡面把我們的私有倉庫位址添加進來。
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"insecure-registries": [
"registry.tongfu.net:5000"
]
}
添加完之後還需要重新開機docker服務。
systemctl restart docker
重新開機完了在用docker info看看。
docker info
這個insecure-registries需要在私有倉庫端和用戶端都配置一遍才行!
3. 使用
3.1 檢視私有倉庫
使用下面的指令檢視私有倉庫裡面的鏡像,目前私有倉庫裡是空的。
curl registry.tongfu.net:5000/v2/_catalog
3.2 拉取centos7鏡像
福哥選擇的是centos:centos7.9-2009版本。
docker pull centos:centos7.9.2009
3.3 推送centos7鏡像到私有倉庫
現在福哥要把剛剛下載下傳的centos鏡像推送到私有倉庫裡。
docker tag centos:centos7.9.2009 registry.tongfu.net:5000/centos:centos7.9.2009
docker push registry.tongfu.net:5000/centos:centos7.9.2009
3.4 檢視私有倉庫
現在再查庫私有倉庫就可以看到剛剛放進去的centos鏡像了。
curl registry.tongfu.net:5000/v2/_catalog
再看看centos鏡像的标簽資訊。
curl registry.tongfu.net:5000/v2/centos/tags/list
4. 總結
今天福哥在TFCentOS7x64伺服器上面部署了私有倉庫registry服務,後面再有其他伺服器需要下載下傳docker鏡像的時候就可以在這裡直接拉取了,無論是速遞還是穩定性都要有一個質的提升了~~
https://m.tongfu.net/home/35/blog/513969.html