Docker 本地鏡像推送到阿裏雲
最近在學習Docker,從安裝Docker開始,到自定義制作鏡像mycentos,但是怎麽把它推送到阿裏雲,一直是困擾我的問題。後面有時間了解了一下,根據本地鏡像推動到阿裏雲其實並沒有我們想象中那麽難。
前提條件:
已經生成一個鏡像,鏡像生成的方法,可以參考另外一篇博文:https://www.cnblogs.com/wendyw/p/9728381.html
已經生產一個鏡像後,現在要做的事就是把本地鏡像推送到阿裏雲上(目前我使用的是阿裏雲的倉庫)
1、從本地鏡像推送到阿裏雲上,需要知道幾個網址
A 阿裏雲開發者平臺:https://dev.aliyun.com/search.html
B 阿裏雲官網:https://www.aliyun.com/
2、為什麽要知道這2個網址:
A 阿裏雲開發者平臺:找到對應的”命名空間/鏡像名稱”,就是push到阿裏雲上的鏡像。當然,也可以去搜索其他你所需要的鏡像。
B 阿裏雲官網:找到容器鏡像服務,步驟:阿裏雲->控制臺-> 產品與服務->彈性計算->容器鏡像服務,可以創建鏡像倉庫、命名空間等。
3、實戰-本地鏡像推送阿裏雲
3.1 打開虛擬機centos7終端,執行docker images出現錯誤:【Failed to restart dock.service: Unit not found.】,執行如下代碼:
systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service
3.2 鏡像的生成方法
如何生成鏡像,請看這一篇博文:https://www.cnblogs.com/wendyw/p/9728381.html
a 打開終端,輸入命令 docker image 查看mycentos:1.3的容器ID
docker images docker run -it 鏡像id //找到mycentos:1.3的鏡像id,此時已經開啟一個容器 //只要容器不退出,另外再打開一個終端,把mycentos:1.3復制一份生成mycentos:1.4上傳到阿裏雲輸入如下命令: docker ps //查看運行中的容器 docker commit -a 命名空間 -m “註釋內容” 容器id(container id) 鏡像名稱(image id):TAG //鏡像名稱(image id):TAG是最新提交的TAG和鏡像名稱 ,比如mycentos:1.4 //容器id是根據docker ps查看,找到對應的容器id
3.3 將本地鏡像登錄到阿裏雲
在阿裏雲平臺,需要做如下3步:
a 創建命名空間,比如abc
b建立倉庫名稱,比如def
c 建立的鏡像倉庫->找到對應的倉庫,選擇def->點擊操作欄管理->基本信息->操作指南,找到第三個步驟,將鏡像推送到Registry,把這3條命令在linux終端系統輸入,對應的imageid、鏡像版本號進行修改,執行命令如下:
$ sudo docker login --username=xxx registry.cn-hangzhou.aliyuncs.com //xxx是阿裏雲的賬戶名稱 $ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/abc/mycentos:[鏡像版本號] //abc是命名空間,[ImageId]是步驟3.2中的鏡像id //mycentos:[鏡像版本號]是提交到阿裏雲上的名稱和TAG,比如這裏是mycentos:1.4.1 $ sudo docker push registry.cn-hangzhou.aliyuncs.com/abc/mycentos:[鏡像版本號] //abc是命名空間,mycentos:[鏡像版本號]與上一步命令保持一致
做完這一步,表示已經從成功從本地上傳到阿裏雲了,可以去阿裏雲開發者平臺搜索abc/mycentos:1.4.1,就能找到你上傳上去的鏡像:
https://dev.aliyun.com/search.html
3.4 將阿裏雲上的鏡像下載到本地
現在想把開發者平臺中的鏡像,拉取到本地,比如:mycentos:1.4.1
執行如下命令,就可以把阿裏雲開發者平臺中的鏡像拉取到本地:
docker pull registry.cn-hangzhou.aliyuncs.com/abc/mycentos:1.4.1 //abc是命名空間
Docker 本地鏡像推送到阿裏雲