四、docker 倉庫(讓我們的鏡像有處可存)


前言

前面講完了docker 鏡像和容器,以及通過Dockerfile 定制屬於我們自己的鏡像,那那現在就是需要將我們自己定制的鏡像存放到倉庫中供他們使用。這一套流程才算是正式走完了。從獲取鏡像,操作鏡像容器,定制鏡像,上傳鏡像。會了這些,也算是docker 正式入門了。

上傳到共有倉庫

docker 官網有一個共有的倉庫,大家應該都知道,和github 類似。dockehub可以管理你自己的鏡像。我們需要創建一個賬號用來管理。

官網:https://hub.docker.com/

我們創建好賬號后,就可以在我們本機的電腦上登錄到官網了。

docker login 用戶名 網址

網址可以不填,默認的就是去登錄官網,登錄官網之后就可以上傳我們自己的鏡像了

 docker push [OPTIONS] NAME[:TAG]
 
 eg:
 docker push quellanan/hello:1.0.0

file

我這截圖是上傳過一次,再上傳的時候提示已經存在,說明是上傳成功的。
我們可以查看一下:

docker search quellanan

file

私有倉庫

docker 官方提供了一個私用倉庫的鏡像,我們可以直接使用。docker-registry.

下載

我們先下載registry 鏡像

docker pull registry

file

容器運行

docker run -d -p 5000:5000 --restart=always --name registry registry

file

到現在我們私有倉庫已經有了,現在我們如何將自己本地鏡像上傳私有倉庫呢?

上傳

首先我們需要使用docker tag 將鏡像重命名,前綴需要和私用倉庫一致,才能上傳成功。

docker tag java:8 127.0.0.1:5000/java:8
docker push 127.0.0.1:5000/java:8 

file

通過下面命令查看是否成功

docker push 127.0.0.1:5000/java:8

file

上面證明我們已經將鏡像上傳到我們的私有倉庫了。

下載

那現在我們先將本地的鏡像刪除掉,然后從私服上下載鏡像,看是否能夠下載下來。

 docker image rm 127.0.0.1:5000/java:8
 
 docker pull 127.0.0.1:5000/java:8

file

證明我們創建的私服是可以用的,但是有沒有感覺有點別扭,不能想dockerhub 那樣直觀的查看我們私有倉庫的鏡像,沒有可視化界面。所以接下來我們用另一個鏡像來搭建我們私有倉庫。

Nexus3

Nexus 是管理maven 的jar 包工具,Nexus3 支持對鏡像的管理。

下載

我們先下載nexus3的鏡像

docker pull sonatype/nexus3

啟動

下載成功后,我們來啟動對應的容器。

docker run -d --name nexus3 --restart=always -p 8081:8081 -p 8082:8082 -p 8083:8083 --mount src=nexus-data,target=/nexus-data sonatype/nexus3

這里說明一下為什么要啟動三個端口。8082是私有倉庫,不啟動的話,好像我們本地根本連不上去,一直報超時。8083為后面代理dockerhub 做准備。
file

容器啟動之后我們在頁面上訪問

192.168.252.53:8081

可以看到我們的 nexus3的鏡像已經啟動成了,我們需要登錄才能進行配置。網上說的用戶名為admin,密碼為admin123 我試了發現登錄不上去。
file

然后看提示說密碼存放在這個位置,所以我們進入到容器。查看我們的密碼。

docker ps
docker exec  -it /bin/bash
cat /nexus-data/admin.password

file

找到密碼后,我們在界面登錄后,會讓我們修改密碼。
file

配置

登錄成功后,我們開始配置我們docker的私有倉庫。選擇Create Repostory
file

選擇docker(hosted)
file

配置倉庫名和端口
file

這些都配置好了,現在我們怎么使用這個私有倉庫呢,我們在/etc/docker/daemon.json 文件中加上私有倉庫的地址。

{
        "registry-mirrors": [
                "https://registry.docker-cn.com",
                "https://dockerhub.azk8s.cn"
        ],
        "insecure-registries":["192.168.252.53:8082","192.168.252.53:8083"]
}

registry-mirrors 是配置國內鏡像,不需要的可以不配置。insecure-registries 就是設置我們自己的私有倉庫地址。

重啟

systemctl daemon-reload
systemctl restart docker

測試

現在我們來登錄上我們私有倉庫(密碼我改成了admin123)

docker login -u admin -p admin123 192.168.252.53:8282

file

一樣的我們打標簽。

docker tag java:8 192.168.252.53:8082/java:8

上傳

docker push 192.168.252.53:8082/java:8

file

可以看到我們已經將鏡像上傳的nexus 上了,我們現在在界面上看下。整個的界面就是這樣的。
file

說明我們用 nexus3 搭建的私有倉庫是沒有問題的。

Nexus3 代理倉庫

上面我們只是配置了docker(host),這個相當於我們的私有倉庫,但是我們現在使用docker login 我們自己的倉庫,如果我們需要的鏡像我們倉庫沒有,就會很麻煩,需要重新登錄到共有倉庫上下載下來,再上傳到我們的私有倉庫,那有沒有辦法可以一步到位呢?

下面我們就來操作一波。

docker(proxy)

上面我們已經配置好了私有倉庫的不用動,下面我們來配置代理倉庫,
file

選擇docker(proxy),name 自定義。主要的Proxy 這里需要注意一下。

https://registry-1.docker.io

file

docker(group)

端口設置8083
file

將代理的和個人倉庫加到group中
file

這樣上面就配置好了。

番外

這篇算是馬馬虎虎的寫完了吧,但總感覺不經如意,又不知道怎么修改,就先這樣發出來吧,后續調整。

好了,就說這么多啦

后續加油♡

歡迎大家關注個人公眾號 "程序員愛酸奶"

分享各種學習資料,包含java,linux,大數據等。資料包含視頻文檔以及源碼,同時分享本人及投遞的優質技術博文。

如果大家喜歡記得關注和分享喲❤

file


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM