基于Docker搭建私有镜像仓库
通常我們?cè)赿ocker中拉取的鏡像都是在docker hub在線存儲(chǔ)庫(kù)中獲取的,這個(gè)在線存儲(chǔ)庫(kù)里的docker鏡像可以由任何用戶(hù)發(fā)布和使用,顯然這在某些場(chǎng)景下是不適用的,比如某些互金的隱私項(xiàng)目,或者是公司完全處于內(nèi)網(wǎng)狀態(tài)不能訪問(wèn)外網(wǎng),再或者你想個(gè)性化定制某些配置等等等,所以這就需要用到私有存儲(chǔ)庫(kù)了,今天我們就基于registry鏡像搭建屬于我們自己的私有倉(cāng)庫(kù)。
1、安裝指令
docker pull registry默認(rèn)拉取最新版:
2、配置私有倉(cāng)庫(kù)地址
vim /etc/docker/daemon.json輸入如下參數(shù),注意修改為自己的ip地址:
"insecure-registries": ["10.211.55.4:5000"]
:wq 保存退出,然后我們重啟啟動(dòng)一下 docker
3、創(chuàng)建容器
docker run -d -p 5000:5000 --name registry docker.io/registry部分參數(shù)說(shuō)明:
- -d:讓容器在后臺(tái)運(yùn)行
- -p:指定容器內(nèi)部使用的網(wǎng)絡(luò)端口映射到我們使用的主機(jī)上
- –name:指定容器創(chuàng)建的名稱(chēng)
4、重新加載配置
sudo systemctl daemon-reload然后瀏覽器訪問(wèn):http://10.211.55.4:5000/v2/_catalog
如果訪問(wèn)不到,嘗試關(guān)閉防火墻:
如果還是訪問(wèn)不不到,可以重啟一下docker
sudo systemctl restart docker然后重新運(yùn)行一下容器。
5、驗(yàn)證上傳鏡像到私有倉(cāng)庫(kù)
我們使用HelloWorld鏡像進(jìn)行測(cè)試,首先先拉取一下:
docker pull hello-world
拉取之后我們看一下鏡像名稱(chēng)及版本:
至此我們就有了一個(gè)hello-world鏡像,接下來(lái)我們使用 push 指令將鏡像推送到剛剛搭建的registry中:
再來(lái)訪問(wèn):http://10.211.55.4:5000/v2/_catalog
我們可以看到私有倉(cāng)庫(kù)目錄已經(jīng)有剛剛推送上去的 hello-world 鏡像了。
6、驗(yàn)證從私有倉(cāng)庫(kù)下載鏡像
驗(yàn)證完了上傳,我們?cè)賮?lái)測(cè)試一下下載鏡像:
# 格式如下: docker pull 127.0.0.1:5000/鏡像名稱(chēng):鏡像版本號(hào)# 以hello-world為例: docker pull 127.0.0.1:5000/hello-world
到這可能有的小伙伴就有疑惑了,你這通過(guò)ip能拉取嗎,我看你一直用的127.0.0.1,畢竟私有倉(cāng)庫(kù)搭建完是要給別人用的嘛~
那么我們就測(cè)試一下:
docker pull 10.211.55.4:5000/hello-world:latest
如上圖所示,通過(guò)ip也是可以拉取成功的,但是在這再額外補(bǔ)充一下,有的小伙伴可能提示如下:
這種顯然是拉取失敗了,提示大致就是,嘗試從https上拉取,但是返回的是http響應(yīng),如何解決呢?
我們可以通過(guò)如下進(jìn)行處理一下,xxx修改為自己的ip地址:
echo '{ "insecure-registries":["xxx.xxx.xxx.xxx:5000"] }' > /etc/docker/daemon.json其實(shí)如果你是按上我上邊這些步驟下來(lái)是不會(huì)有問(wèn)題的,在步驟2中配置私有倉(cāng)庫(kù)地址時(shí),其實(shí)我們已經(jīng)配置了insecure-registries,但是配置后我們需要重啟啟動(dòng)一下docker才可以生效,畢竟是配置了系統(tǒng)文件嘛~
ok,至此整個(gè)搭建過(guò)程完畢~
— END —
推薦閱讀:
基于Docker的Redis集群搭建
Docker安裝Nginx
基于Docker方式實(shí)現(xiàn)Elasticsearch集群
Docker中Maven私服的搭建
基于Docker搭建Gitlab代碼存儲(chǔ)
總結(jié)
以上是生活随笔為你收集整理的基于Docker搭建私有镜像仓库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C#基础之Equals和Dispose
- 下一篇: Unhandled exception: