1. 程式人生 > >docker自建倉庫Registry

docker自建倉庫Registry

建倉 問題解決 pin efi lan crt gis install fault

因為生產情況下官方容器還是比較慢的,所以會用到自建docker倉庫。docker官方提供完整部署倉庫的容器,你只需要提供域名證書,把文件系統掛載到容器,一個用戶密碼文件就可以使用基本的倉庫功能了。

啟動一個registry容器

默認情況下,會將倉庫存放於容器內的/tmp/registry目錄下,這樣如果容器被刪除,則存放於容器中的鏡像也會丟失,所以我們一般情況下會指定本地一個目錄掛載到容器內的/tmp/registry下,如下

[[email protected] distribution-master]# docker run -d -p 5000:5000 -v /opt/registry:/tmp/registry registry

9ed2f91a7056f1109d2146122930b12f7d077a5404f621647d12eeeb29725260

提交一個本地的鏡像到本地倉庫,這個需要你首先 tag 一個鏡像,然後才能 push 上去

[[email protected] ~]# docker tag redis localhost:5000/redis

[[email protected] ~]# docker push localhost:5000/redis

但是因為你本地倉庫如果不進行證書認證只能127.0.0.1訪問,所以我們要創建密鑰。否則在另外一臺機器pull時會提示:

[email protected]

/* */:/etc/docker# docker pull 192.168.161.130:5000/redis
Using default tag: latest
Error response from daemon: Get https://192.168.161.130:5000/v1/_ping: http: server gave HTTP response to HTTPS client

一種處理方式是修改客戶端機器

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

{ "insecure-registries":["192.168.1.100:5000"] }

保存退出後,重啟docker。問題解決。

另一種方式是在服務器端添加證書

配置一個域名

給域名準備一個加密證書,啟動容器

docker run -d -p 5000:5000 --restart=always --name registry \

-v /etc/docker/certs:/certs \

-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \

-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \

registry:2

------------------------------------

還有一個更簡單的建立本地倉庫的辦法:

yum install docker docker-distribution

#systemctl enable docker
#systemctl start docker
#systemctl enable docker-registry
#systemctl start docker-registry

[[email protected] /]# vim /etc/sysconfig/docker
  • 把下面這一行添加進去。
OPTIONS=‘--insecure-registry 192.168.161.130:5000‘

systemctl restart docker docker-registry

docker tag ubuntu 192.168.161.130:5000/ubuntu
docker push 192.168.161.130:5000/ubuntu

 
 

docker自建倉庫Registry