搭建Docker Registry私服
重復(fù)一次之前的動作,搞一個服務(wù)器永脓,在Docker Hub https://hub.docker.com 上搜 Registry ,第一個也是標(biāo)星最多的那個就是了。拖進(jìn)Docker docker pull registry
菜枷。然后新建/usr/local/docker/registry/docker-compose.yml 称鳞,寫入:
version: '3.1'
services:
registry:
image: registry
restart: always
container_name: registry
ports:
- 5000:5000
volumes:
- /usr/local/docker/registry/data:/var/lib/registry
然后dicker-compose up
涮较,為喜歡看一眼后臺跑起來的樣子,就不-d
了冈止。
后臺跑起來之后狂票,瀏覽器試一下 http://192.168.111.133:5000/v2/ ,這是出現(xiàn)了
說明Registry私服就搭建好了熙暴,因為還沒有往上推鏡像闺属,所以里面沒有內(nèi)容慌盯。
搭建好之后,還需要配置一下屋剑,目的是再往docker里拖鏡像的時候先從自己搭建的Registry私服里找润匙。找到之前配置docker國內(nèi)加速的/etc/docker/daemon.json文件,修改為如下:
{
"registry-mirrors": [
"https://registry.docker-cn.com"
],
"insecure-registries": [
"192.168.111.133:5000"
]
}
然后重啟服務(wù)唉匾,
sudo systemctl daemon-reload
sudo systemctl restart docker
重啟后看一看配置成功里沒有孕讳,輸入docker info
,有這一項巍膘,說明行了厂财。
至此,Registry私服就搭建好也能用了峡懈,如果有需要璃饱,還可以再部署docker-registry-frontend 或 docker-registry-web等瀏覽器圖像界面。
************************************昏割一下****
現(xiàn)在開始試一試肪康,往私服里推拖鏡像荚恶。
先往docker里拖一個hello-world鏡像docker pull hello-world
。
docker images
看到hello-world已經(jīng)有了磷支。
然后要用到命令 “docker tag : 標(biāo)記本地鏡像谒撼,將其歸入某一倉庫” ,語法規(guī)則為
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
IMAGE[:TAG]
就是 hello-world:latest 雾狈,
[REGISTRYHOST/]
就是 192.168.111.133:5000/ 廓潜,
[USERNAME/]
就是 creolophuth/ ,
NAME
別變了,還是 hello-world 善榛,
[:TAG]
版本號辩蛋,指定為 :1.0.0 ,
完整的命令就是
docker tag hello-world:latest 192.168.111.133:5000/creolophuth/hello-world:1.0.0
標(biāo)記好之后移盆,docker images
一下悼院,看到鏡像已經(jīng)有了,然后推到Registry私服上:
docker push 192.168.111.133:5000/creolophuth/hello-world
顯示已推
查看全部鏡像
curl -XGET http://192.168.111.133:5000/v2/_catalog
如果庫里鏡像太多咒循,可以查看指定鏡像
curl -XGET http://192.168.111.133:5000/v2/creolophuth/hello-world/tags/list
兩個命令都試一下樱蛤,都能找到,說明鏡像已經(jīng)推到私服庫里了
現(xiàn)在已經(jīng)推上去了剑鞍,接下來試試往docker里拖昨凡,拖之前先把docker里的鏡像先刪掉
docker rmi hello-world
docker rmi 192.168.111.133:5000/creolophuth/hello-world
輸?shù)诙l命令后報錯了Error: No such image: 192.168.111.133:5000/creolophuth/hello-world
,可能因為兩個鏡像hello-world和192.168.111.133:5000/creolophuth/hello-world的id是一樣的蚁署,但是docker images
后192.168.111.133:5000/creolophuth/hello-world還在那沒有變成虛懸鏡像便脊。
那么直接用id刪除試試
docker rmi fce289e99eb9
控制臺顯示成功了,docker images
后也干凈了光戈。
現(xiàn)在從私服庫往docker拖hello-world鏡像
docker pull 192.168.111.133:5000/creolophuth/hello-world:1.0.0
顯示成功 Pull complete
哪痰。docker images
后發(fā)現(xiàn)鏡像已經(jīng)進(jìn)去了遂赠,需要注意的是,如果不輸入版本號晌杰,docker默認(rèn)會去找latest版本跷睦,而我沒有把1.0.0指定為latest,庫里也沒有l(wèi)atest肋演,會導(dǎo)致拖鏡像失敗抑诸。
至此,開發(fā)前的準(zhǔn)備工作就算做完了有了Gitlab爹殊、Nexus蜕乡、Registry的私服,在不連外網(wǎng)的條件下也能完成開發(fā)了(但是庫里得有東西)梗夸。