docker 私有 repository


為什么需要私有倉庫?

  首先假如公司內部有兩台以上的服務器,使用docker管理應用程序,我在A服務器上創建了一個.net core 的鏡像,需要在B服務器上共享這個鏡像,怎么辦?當然不能拷貝一份代碼在去B服務器創建上去創建,服務器少,以及版本迭代少的拷貝沒問題,如果服務器多了,版本迭代多了,每次都拷貝粘貼不得把人累死,創建私有就不一樣了,一個命令即可。

  其次就是內網且多服務器的情況下,就必須有個私有倉庫了。

創建私有倉庫

1、拉取 registry 鏡像 :

   docker pull registry

2、運行容器:

  docker run -d -v /repositories:/var/lib/registry -e REGISTRY_STORAGE_DELETE_ENABLED=true -p 5000:5000 --restart=always --privileged=true --name registry registry

   //   -e REGISTRY_STORAGE_DELETE_ENABLED=true 設置倉庫是可以刪除的

  看運行是否成功,瀏覽器訪問:http://192.168.0.109:5000/v2

3、提交一個鏡像

  首先修改文件 /etc/docker/daemon.json (是個json文件,如果沒有就創建)

  添加  "insecure-registries":["192.168.0.100:5000"]  --如果不添加這段,只能用https的方式 ,(insecure:不安全的)

  docker image tag elasticsearch:6.7.0 192.168.0.100:5000/elasticsearch   --打一個tag

   docker push 192.168.0.100:5000/elasticsearch

4、在其他機器拉取鏡像,同樣需要開啟不安全的倉庫

  docker pull 192.168.0.100:5000/elasticsearch

5、查詢私有倉庫有哪些鏡像

   GET http://192.168.0.100:5000/v2/_catalog  // 查詢鏡像列表

   GET http://192.168.0.100:5000/v2/{image_name}/tags/list    // 查詢單個鏡像的tags

      HEAD http://192.168.0.100:5000/v2/{image_name}/manifests/1.0.0    // 查詢單個鏡像的Digest,說是那么說,用postman查出來不對,

      docker inspect {image_name}    // 查詢鏡像詳細信息,是一個json,RepoDigests 項 就是 image 的 digest

   DELETE  http://192.168.0.100:5000/v2/{image_name}/manifests/{Digest}    // 刪除鏡像

   api地址:https://github.com/docker/distribution/blob/master/docs/spec/api.md

有時候要用到域名,公司內部搭一個dns服務器,非docker 倉庫的linux需要修改dns的地址,指向dns服務器來找到 registry.xxx.com ,附上修改方法:

--打開配置文件

sudo vim /etc/resolv.conf

--添加 nameserver dns服務器的地址

nameserver 192.168.0.101

esc -> :wq // (保存)

立即生效,ping registry.xx.com 就可以通了。


免責聲明!

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



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