ubuntu-docker入門到放棄(三)images鏡像管理


 

docker雖然有公共的鏡像管理hub,但是我們在日常的使用中,由於不同的業務場景,不同的架構,公共的鏡像庫不能滿足需求,並且出於安全考慮,會搭建私有的docker hub鏡像庫來管理自己的images,今天我們主要學習的就是搭建私有的images庫。

其實搭建私有倉庫很簡單,只需要下載並運行一個容器就可以了:

#docker pull registry
#docker images

運行這個images啟動一個容器:

#docker run -dit -p 5000:5000 -v /opt/data/registry/:/tmp/registry registry

默認的端口是5000,需要吧端口映射到宿主機。

默認的鏡像存儲容器的/tmp/registry,如果刪除了容器,則上傳的鏡像也會刪除,所以為了安全,將目錄映射到宿主機。

-v 參數:映射目錄到宿主機

#docker ps

接下來我們就找一個images上傳上去吧:

#docker pull tomcat:7

下載一個tomcat7

要在本地倉庫上傳鏡像,首先需要標記一個鏡像,以下標記tomcat這個鏡像:

#docker tag tomcat:7 10.30.234.212:5000/tomcat

然后進行上傳:

首次上傳會出現以下錯誤:

Get https://192.168.1.23:5000/v2/: http: server gave HTTP response

出現上面錯誤的原因分析:

因為Docker從1.3.X之后,與docker registry交互默認使用的是https,然而此處搭建的私有倉庫只提供http服務,所以當與私有倉庫交互時就會報上面的錯誤。
為了解決這個問題需要在啟動docker server時增加啟動參數為默認使用http訪問。
目前很多文章都是通過修改docker的配置文件“etc/systemconfig/docker",重啟docker來解決這個問題。

但發現docker1.12.3版本並無此文件,根據網上創建此文件,並填入相應內容,重啟docker無效果,仍然報此錯誤。

解決方法:
在”/etc/docker/“目錄下,創建”daemon.json“文件。在文件中寫入:

{ "insecure-registries":["192.168.1.23:5000"] }
#restart docker
#docker start 366c3c5fe1ea #registry容
#docker push  10.30.234.212:5000/tomcat

這樣就可以上傳成功了,然后我們來查看一下我們上傳的images:

查看上傳images的log:

#curl http://192.168.1.23:5000/v2/_catalog
{"repositories":["tomcat"]

查看tags:

#curl http://10.30.234.212:5000/v2/tomcat/tags/list
{"name":"tomcat","tags":["latest"]

然后我們查看本地的images會發現有已經下載的tomcat,我們把這個都刪除掉,測試一下從本地私有鏡像庫拉取images:

#docker images

我們把上面兩個都刪除掉:

#docker rmi 10.30.234.212:5000/tomcat
#docker rmi tomcat:7
#docker image

已經沒有tomcat了,接下來我們從私有庫下載一個tomcat:

#docker pull 10.30.234.212:5000/tomcat
#docker image

也可以在局域網或者能訪問到私有鏡像地址的其他機器上來遠程拉取鏡像,需要注意https那個問題,如果遇到,還是需要配置/etc/docker/下面的daemon.json文件。

 

私有倉庫中上傳的images是不支持刪除的,需要使用第三方插件來刪除:

插件地址:

插件github上的位置:
https://github.com/burnettk/delete-docker-registry-image
#curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/null
#sudo chmod a+x /usr/local/bin/delete_docker_registry_image

設置images庫的路徑:

查找路徑:

#find / -name registry
root@iZuf606noo6islit6xfcq6Z:/usr/local/bin# find / -name registry
/var/lib/docker/volumes/9d875af73ca50c226e8ff3c0cbb52d126ca59cf03381a7830b9d9de7335eb579/_data/docker/registry
/var/lib/docker/volumes/a96c269acc4a365a98823fba6cf11254ecda7787567373b19b2b9b1cc6c36765/_data/docker/registry
/var/lib/docker/overlay2/f1ecdc6224c9fce2b725b1e1dc4e9e6e234afb49e0ed29aa14e420b7a5158193/diff/var/lib/ucf/registry
/var/lib/docker/overlay2/e2984582e55abb4c80d86225eb2ce5187de206c035d49d2c10b7dd537de445be/diff/var/lib/ucf/registry
/var/lib/docker/overlay2/84e5da2816ddfdc7b1d2e5e25d1c516dfc468e8135b25ff2c1a60ea3eb16e0cf/diff/var/lib/ucf/registry
/var/lib/docker/overlay2/d8559fc483ba2956dc6965589e9dbb00259cfbbdc22670428d8e1a8fd78e01d3/diff/bin/registry
/var/lib/docker/overlay2/8185a14e7a67927ddfe51ecc7a33e79a1d162075f34fa2b2d7c238fc71d9d3ab/diff/var/lib/ucf/registry
/var/lib/docker/overlay2/298233ae749cdbf0e7373f88b7374ff158c9e65e79b982fd863c5c60b21a2f40/diff/var/lib/ucf/registry
/var/lib/docker/overlay2/8a6c0d5788cba5d14c85dcea54f4a21713474bf19bf8b213e7d1ac7b3ef5cd2b/diff/tmp/registry
/var/lib/docker/overlay2/8a6c0d5788cba5d14c85dcea54f4a21713474bf19bf8b213e7d1ac7b3ef5cd2b/diff/var/lib/registry
/var/lib/docker/overlay2/8a6c0d5788cba5d14c85dcea54f4a21713474bf19bf8b213e7d1ac7b3ef5cd2b/merged/bin/registry
/var/lib/docker/overlay2/8a6c0d5788cba5d14c85dcea54f4a21713474bf19bf8b213e7d1ac7b3ef5cd2b/merged/tmp/registry
/var/lib/docker/overlay2/8a6c0d5788cba5d14c85dcea54f4a21713474bf19bf8b213e7d1ac7b3ef5cd2b/merged/var/lib/registry
/var/lib/docker/overlay2/8a6c0d5788cba5d14c85dcea54f4a21713474bf19bf8b213e7d1ac7b3ef5cd2b/merged/etc/docker/registry
/var/lib/docker/overlay2/8cec4dd19bf9c878ac8d9a60f46140bc279815dee2a28a83d3917092a7c356ac/diff/etc/docker/registry
/var/lib/ucf/registry
/opt/data/registry

使用這個路徑來聲明環境變量:/var/lib/docker/volumes/9d875af73ca50c226e8ff3c0cbb52d126ca59cf03381a7830b9d9de7335eb579/_data/docker/registry

 

#cd /var/lib/docker/volumes/9d875af73ca50c226e8ff3c0cbb52d126ca59cf03381a7830b9d9de7335eb579/_data/docker/registry
#export REGISTRY_DATA_DIR=/var/lib/docker/volumes/9d875af73ca50c226e8ff3c0cbb52d126ca59cf03381a7830b9d9de7335eb579/_data/docker/registry/v2

 

先看一下我們的私有倉庫有哪些images:

#curl http://192.168.1.23:5000/v2/tomcat/tags/list
{"name":"tomcat","tags":["latest"]

只有一個,刪除這個images:

#delete_docker_registry_image --image tomcat:latest

在看一下:

#curl http://192.168.1.23:5000/v2/tomcat/tags/list
{"errors":[{"code":"NAME_UNKNOWN","message":"repository name not known to registry","detail":{"name":"tomcat"}}]

已經刪除,查不到了。

 

本次關於私有倉庫的學習就到這里。

 


免責聲明!

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



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