首先科普docker幾種“倉庫”概念,可分為:本地鏡像,本地倉庫,公有倉庫(docker hub)
本地鏡像:在把java程序打包成鏡像,輸出的鏡像的位置就是本地鏡像
公有倉庫:一個叫docker hub的網站,類似於github,所有人都可以把自己的鏡像上傳上去,也可以使用別人的鏡像
私有倉庫:相當於自己建的docker hub,常用於不可公開的(例如公司),或者追求網速(鏡像不像代碼文件那么小)
用代碼和github類比,本地倉庫就是在本地硬盤的沒用源碼管理的一份代碼文件,公有倉庫就是github,私有倉庫就是自建的git服務器例如bitbucket或gogs等
由於k8s運行鏡像必須從倉庫pull,公有私有倉庫都行,但不能本地,所以以下說明如何在本機建私有倉庫
本例使用的是docker自帶的私有倉庫registry:2
運行docker pull registry:2,下載registry:2的鏡像
運行docker run -d -p 5000:5000 --restart=always --name registry registry:2,運行registry:2鏡像
PS:端口設置了5000,也就是此倉庫端口是5000,記着以后會用到
到此registry:2倉庫運行了,可以push一個本地鏡像測試
查詢本地有此鏡像
運行docker tag docker.io/springio/ewater:0.0.1 192.168.31.141:5000/springio/ewater:0.0.1,設置鏡像的tag
其中tag后面的“docker.io/springio/ewater:0.0.1”,docker.io固定,springio/ewater:0.0.1就是上面看到的鏡像的名稱和TAG
后面的“192.168.31.141:5000/springio/ewater:0.0.1”,其中192.168.31.141:5000代表倉庫的ip和端口
PS:這里寫的不好,因為我也沒太理解原理
修改后多了一行
運行docker push 192.168.31.141:5000/springio/ewater:0.0.1,把本地鏡像push到倉庫
其中192.168.31.141:5000/springio/ewater:0.0.1就是上面設置的tag
上傳后,可以用registry:2的http接口看鏡像目錄