前言
前面講完了docker 鏡像和容器,以及通過Dockerfile 定制屬於我們自己的鏡像,那那現在就是需要將我們自己定制的鏡像存放到倉庫中供他們使用。這一套流程才算是正式走完了。從獲取鏡像,操作鏡像容器,定制鏡像,上傳鏡像。會了這些,也算是docker 正式入門了。
上傳到共有倉庫
docker 官網有一個共有的倉庫,大家應該都知道,和github 類似。dockehub可以管理你自己的鏡像。我們需要創建一個賬號用來管理。
我們創建好賬號后,就可以在我們本機的電腦上登錄到官網了。
docker login 用戶名 網址
網址可以不填,默認的就是去登錄官網,登錄官網之后就可以上傳我們自己的鏡像了
docker push [OPTIONS] NAME[:TAG]
eg:
docker push quellanan/hello:1.0.0
我這截圖是上傳過一次,再上傳的時候提示已經存在,說明是上傳成功的。
我們可以查看一下:
docker search quellanan
私有倉庫
docker 官方提供了一個私用倉庫的鏡像,我們可以直接使用。docker-registry.
下載
我們先下載registry 鏡像
docker pull registry
容器運行
docker run -d -p 5000:5000 --restart=always --name registry registry
到現在我們私有倉庫已經有了,現在我們如何將自己本地鏡像上傳私有倉庫呢?
上傳
首先我們需要使用docker tag 將鏡像重命名,前綴需要和私用倉庫一致,才能上傳成功。
docker tag java:8 127.0.0.1:5000/java:8
docker push 127.0.0.1:5000/java:8
通過下面命令查看是否成功
docker push 127.0.0.1:5000/java:8
上面證明我們已經將鏡像上傳到我們的私有倉庫了。
下載
那現在我們先將本地的鏡像刪除掉,然后從私服上下載鏡像,看是否能夠下載下來。
docker image rm 127.0.0.1:5000/java:8
docker pull 127.0.0.1:5000/java:8
證明我們創建的私服是可以用的,但是有沒有感覺有點別扭,不能想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 做准備。
容器啟動之后我們在頁面上訪問
192.168.252.53:8081
可以看到我們的 nexus3的鏡像已經啟動成了,我們需要登錄才能進行配置。網上說的用戶名為admin,密碼為admin123 我試了發現登錄不上去。
然后看提示說密碼存放在這個位置,所以我們進入到容器。查看我們的密碼。
docker ps
docker exec -it /bin/bash
cat /nexus-data/admin.password
找到密碼后,我們在界面登錄后,會讓我們修改密碼。
配置
登錄成功后,我們開始配置我們docker的私有倉庫。選擇Create Repostory
選擇docker(hosted)
配置倉庫名和端口
這些都配置好了,現在我們怎么使用這個私有倉庫呢,我們在/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
一樣的我們打標簽。
docker tag java:8 192.168.252.53:8082/java:8
上傳
docker push 192.168.252.53:8082/java:8
可以看到我們已經將鏡像上傳的nexus 上了,我們現在在界面上看下。整個的界面就是這樣的。
說明我們用 nexus3 搭建的私有倉庫是沒有問題的。
Nexus3 代理倉庫
上面我們只是配置了docker(host),這個相當於我們的私有倉庫,但是我們現在使用docker login 我們自己的倉庫,如果我們需要的鏡像我們倉庫沒有,就會很麻煩,需要重新登錄到共有倉庫上下載下來,再上傳到我們的私有倉庫,那有沒有辦法可以一步到位呢?
下面我們就來操作一波。
docker(proxy)
上面我們已經配置好了私有倉庫的不用動,下面我們來配置代理倉庫,
選擇docker(proxy),name 自定義。主要的Proxy 這里需要注意一下。
https://registry-1.docker.io
docker(group)
端口設置8083
將代理的和個人倉庫加到group中
這樣上面就配置好了。
番外
這篇算是馬馬虎虎的寫完了吧,但總感覺不經如意,又不知道怎么修改,就先這樣發出來吧,后續調整。
好了,就說這么多啦
后續加油♡
歡迎大家關注個人公眾號 "程序員愛酸奶"
分享各種學習資料,包含java,linux,大數據等。資料包含視頻文檔以及源碼,同時分享本人及投遞的優質技術博文。
如果大家喜歡記得關注和分享喲❤