天天看點

Docker私有倉庫搭建與mac上使用準備工作倉庫伺服器 ubuntu用戶端證書配置倉庫使用配置登陸認證使用Harbor搭建私有倉庫

Docker私有倉庫搭建與使用

  • 準備工作
  • 倉庫伺服器 ubuntu
    • 生成證書
    • 啟動
  • 用戶端證書配置
  • 倉庫使用
  • 配置登陸認證
  • 使用Harbor搭建私有倉庫

官方文檔

準備工作

兩台伺服器:此處使用一台ubuntu作為倉庫,一台mac作為使用者

伺服器 ip docker版本
ubuntu 192.168.10.1 Docker version 18.09.7
macOS Mojave 192.168.10.2 Docker version 19.03.1

保持兩台機器docker版本不要太低,因為daemon.json在有些低版本不會生效

倉庫伺服器 ubuntu

docker 安裝好後需要擷取官方提供的

registry

鏡像

推薦使用

registry:2

直接pull

registry:lastest

其實也是

registry:2

# 拉取的是同一個鏡像
docker pull registry:2
docker pull registry:lastest
           

生成證書

由于

registry:2

要求使用https通路,是以接下來需要自行簽發簽字證書

使用

openssl

進行簽發,簽發給

repository.fehead.com

(此處也推薦使用

registry

字首)

此處将證書存放在

/root/certs

cd /root/certs
# 生成key文
openssl genrsa -out repository.fehead.com.key 2048
# 生成crt
openssl req -newkey rsa:4096 -nodes -sha256 -keyout repository.fehead.com.key -x509 -days 365 -out repository.fehead.com.crt
           

然後會填寫資訊

Country Name (2 letter code) [XX]:CN # 你的國家名稱
State or Province Name (full name) []:shanxi # 省份
Locality Name (eg, city) [Default City]:xi'an # 所在城市
Organization Name (eg, company) [Default Company Ltd]:fehead # 組織名稱
Organizational Unit Name (eg, section) []:develope # 組織單元名稱
Common Name (eg, your name or your server's hostname) []:repository.fehead.com # 域名
           

由于是自己簽發的證書,不受docker信任,是以需要将證書放入docker的證書中

centOS 和 ubuntu的目錄都在

/etc/docker/certs.d/域名

需要把生成的證書

.crt

檔案放進去

mkdir -p /etc/docker/certs.s/repository.fehead.com
cp /root/certs/repository.fehead.com.crt /etc/docker/certs.s/repository.fehead.com/
           

啟動

# 端口可以映射為https端口443,也可以使用registry一樣的端口5000
docker run -d -p 5000:5000 --restart=always --name registry 
-v /root/certs:/certs # 挂載機器的證書目錄到容器的“/certs”
-v /home/docker_registry/images:/opt/docker-image # 鏡像存儲目錄                        
-e STORAGE_PATH=/opt/docker-image # 注意此處指定的位址是容器記憶體儲鏡像的路徑
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/repository.fehead.com.crt # 指定容器内證書檔案
-e REGISTRY_HTTP_TLS_KEY=/certs/repository.fehead.com.key # 指定容器内key檔案
registry:2
           

用戶端證書配置

用戶端如果是centos和ubuntu,可以按照服務端的docker證書路徑進行存放:

mkdir -p /etc/docker/certs.s/repository.fehead.com
scp [email protected]:/root/certs/repository.fehead.com.crt /etc/docker/certs.s/repository.fehead.com/
           

mac和windows不需要配置證書

但要在

docker desktop

裡面配置私有倉庫位址

Docker私有倉庫搭建與mac上使用準備工作倉庫伺服器 ubuntu用戶端證書配置倉庫使用配置登陸認證使用Harbor搭建私有倉庫

選擇 Preferences,進入再選擇Deamon欄目,在Insecure registries配置遠端倉庫位址,windows也類似需要在windows的gui上配置

Docker私有倉庫搭建與mac上使用準備工作倉庫伺服器 ubuntu用戶端證書配置倉庫使用配置登陸認證使用Harbor搭建私有倉庫

倉庫使用

在把本地鏡像push到倉庫中

docker tag lmwis/docker-test:1.0 repository.fehead.com:5000/lmwis/docker-test:1.0
docker push repository.fehead.com/lmwis/docker-test:1.0
           

拉取私有倉庫鏡像

docker pull repository.fehead.com/lmwis/docker-test:1.0
           

Done.

配置登陸認證

先保證原有倉庫關閉狀态

安裝AB壓力測試工具,ubuntu和centos安裝有些不一樣

ubuntu

sudo apt-get install apache2-utils
           

如果不行就先更新apt-get

sudo apt-get update
           

centos 使用yum安裝

yum install httpd-tools
           

在倉庫端建立密碼檔案

cd /root
mkdir auth
htpasswd -Bbn testuser testpassword > auth/htpasswd
           

然後再啟動容器,這次加了幾個參數

docker run -d -p 5000:5000 --restart=always --name registry 
-v /root/certs:/certs # 挂載機器的證書目錄到容器的“/certs”
-v /home/docker_registry/images:/opt/docker-image # 鏡像存儲目錄                        
-e STORAGE_PATH=/opt/docker-image # 注意此處指定的位址是容器記憶體儲鏡像的路徑
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/repository.fehead.com.crt # 指定容器内證書檔案
-e REGISTRY_HTTP_TLS_KEY=/certs/repository.fehead.com.key # 指定容器内key檔案
-v /root/auth:/auth
-e "REGISTRY_AUTH=htpasswd"
-e "REGISTRY_AUTH_HTPASSWD_REALM=lmwis" # 這個右邊可以改 其他的無序改動
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
registry:2
           

完成。之後進行push和pull操作的時候需要先登陸

docker login repository.fehead.com
           

Done.

參考文檔

使用Harbor搭建私有倉庫

另一種私有倉庫的搭建方法(推薦)

觀摩這位大佬