【Docker】registry部署docker私有镜像仓库
Docker Hub作為Docker默認官方公共鏡像倉庫,但是如果我們不想使用怎么辦,第一我們可以替換默認鏡像倉庫為我們國內的一些鏡像倉庫,第二就是如我們自己搭建一個自己的私有鏡像倉庫,官方也提供docker registry鏡像,使得搭建私有倉庫非常簡單。
Docker Registry 是 Docker 的鏡像倉庫項目,通過它來部署私有的鏡像倉庫,用于鏡像的存儲與分發。它同樣也是一個鏡像,可以直接 pull 拉取下來。
首先我們先拉取一下registry鏡像
#docker pull registry
如果要指定某個版本,加上tag,上面默認拉取最新版本。
拉取成功,鏡像信息如下:
我們來運行這個鏡像倉庫:
#docker run -it -d -v /var/registry:/data/registry -p 5000:5000 --restart=always --name jxch registry
[options]:
-it:為容器分配一個偽終端
-d:后臺模式運行容器
-v:將宿主機的目錄綁定并映射到倉庫容器的目錄,用于存放上傳到該倉庫的鏡像文件,例如上面,是將宿主機的/var/registry目錄綁定到容器的/data/registry目錄
-p:映射端口,在宿主機上的應用容器,有自己的私有IP,如果想要訪問這個應用容器中的某個應用,對外部來說比較難,但docker提供的這個 -p 參數可以將宿主機上的端口映射到應用容器的端口,這里我們是將宿主機的5000端口映射到容器的5000端口,訪問宿主機的5000端口即可訪問這個倉庫的服務。
—restart=always:若容器異常退出會自動重啟容器
—name:給容器命名
另外,可以使用docker ps查看:
#docker ps
執行
#curl http://127.0.0.1:5000/v2/_catalog
返回
{“repositories”:[]}
表明宿主機的 5000 端口被映射到了容器的 5000 端口,響應結果為空,表示目前倉庫里還沒有任何鏡像。
這樣我們的私有倉庫已經建成了。
現在我們將另一臺服務器(192.168.0.3)的鏡像上傳到我們的私有鏡像倉庫
首先我們查看一下這臺服務器上都有哪些鏡像
#docker images
這里我們需要給這個鏡像添加一個帶有私有倉庫ip的tag,這樣后面才能成功推送到私有倉庫。
#docker tag 683a 192.168.0.99:5000/httpd
執行完成后會出現一個新的鏡像。
現在可以將鏡像上傳到私有倉庫了
docker push 192.168.0.99:5000/httpd
顯示上傳失敗,原因是 推送鏡像到倉庫用的是https ,但現在是http, 修改下該服務器的daemon.json配置文件即可
修改 /etc/docker/daemon.json 文件(沒有需創建一個)
添加
{
“insecure-registries”:[“192.168.0.99:5000”]
}
重啟docker服務
#systemctl restart docker
重新上傳鏡像可以了
查看下私有倉庫中的信息
#curl http://127.0.0.1:5000/v2/_catalog
一個httpd鏡像已經存在倉庫中了。
現在我們可以從自己的私有鏡像倉庫下載鏡像了
#docker pull 192.168.0.99:5000/httpd
這里依然報錯,也是http的問題,我們修改一下daemon.ison文件就好了
總結
以上是生活随笔為你收集整理的【Docker】registry部署docker私有镜像仓库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Docker】容器的几种网络模式
- 下一篇: 【Docker】Docker的三大核心组