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
裡面配置私有倉庫位址
選擇 Preferences,進入再選擇Deamon欄目,在Insecure registries配置遠端倉庫位址,windows也類似需要在windows的gui上配置
倉庫使用
在把本地鏡像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搭建私有倉庫
另一種私有倉庫的搭建方法(推薦)
觀摩這位大佬