本文給大家介紹下Docker中的常用的鏡像私服倉庫,DockerHub,阿裡雲倉庫和Harbor鏡像私服倉庫。
1 Docker hub
官網位址:hub.docker.com
(1)在docker機器上登入
docker login
(2)輸入使用者名和密碼

(3)docker push q279583842q/tomcat-ip
[注意鏡像名稱要和docker id一緻,不然push不成功]
(4)給image重命名,并删除掉原來的
docker tag tomcat-ip q279583842q/tomcat-ip
docker rmi -f tomcat-ip
(5)再次推送,重新整理hub.docker.com背景,發現成功
(6)别人下載下傳,并且運作
docker pull q279583842q/tomcat-ip
docker run -d --name user01 -p 6661:8080 q279583842q/tomcat-ip
服務上傳和下載下傳比較耗時
2 阿裡雲Docker Registry
倉庫位址:
https://cr.console.aliyun.com/cn-hangzhou/instances/repositories登入阿裡雲,進入到鏡像服務,建立命名空間
建立鏡像倉庫
将鏡像推送到阿裡雲鏡像倉庫
$ docker login --username=dpb2****83842 registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/deng66/dpb-tomcat:[鏡像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/deng66/dpb-tomcat:[鏡像版本号]
我們pull鏡像的步驟
$ docker pull registry.cn-hangzhou.aliyuncs.com/deng66/dpb-tomcat:[鏡像版本号]
3 私服Harbor
3.1 Harbor簡介
Docker容器應用的開發和運作離不開可靠的鏡像管理,雖然Docker官方也提供了公共的鏡像倉庫,但是從安全和效率等方面考慮,部署我們私有環境内的Registry也是非常必要的。Harbor是由VMware公司開源的企業級的Docker Registry管理項目,它包括權限管理(RBAC)、LDAP、日志稽核、管理界面、自我注冊、鏡像複制和中文支援等功能。
3.2 功能介紹
元件 | 功能 |
harbor-adminserver | 配置管理中心 |
harbor-db | Mysql資料庫 |
harbor-jobservice | 負責鏡像複制 |
harbor-log | 記錄記錄檔 |
harbor-ui | Web管理頁面和API |
nginx | 前端代理,負責前端頁面和鏡像上傳/下載下傳轉發 |
redis | 會話 |
registry | 鏡像存儲 |
4.3.3 Harbor安裝
官網安裝教程:
https://goharbor.io/docs/2.3.0/install-config/首先需要下載下傳對于的安裝檔案:
https://github.com/goharbor/harbor/releases因為比較大,從官網下載下傳很慢,是以會在附近中直接給大家提供,使用最新的2.3.3版本
1> 上傳解壓安裝檔案
cd /usr/local/
2>修改配置檔案
把 harbor.yml.tmpl 修改為 harbor.yml 檔案
hostname: 192.168.56.15
http:
port: 80
https:
port: 443
certificate: /data/cert/192.168.56.15.crt
private_key: /data/cert/192.168.56.15.key
external_url: https://192.168.56.15
harbor_admin_password: Harbor12345
database:
password: root123
max_idle_conns: 50
max_open_conns: 100
data_volume: /data/harbor
clair:
updaters_interval: 12
jobservice:
max_job_workers: 10
notification:
webhook_job_max_retry: 10
chart:
absolute_url: disabled
log:
level: info
local:
rotate_count: 50
rotate_size: 200M
location: /data/harbor/logs
_version: 1.10.0
proxy:
http_proxy:
https_proxy:
no_proxy:
components:
- core
- jobservice
- clair
3>.harbor配置 https 通路
參考文檔:
https://goharbor.io/docs/1.10/install-config/configure-https/ https://goharbor.io/docs/1.10/install-config/troubleshoot-installation/#https預設情況下,Harbor不附帶證書。可以在沒有安全性的情況下部署Harbor,以便您可以通過HTTP連接配接到它。但是,隻有在沒有外部網絡連接配接的空白測試或開發環境中,才可以使用HTTP。在沒有空隙的環境中使用HTTP會使您遭受中間人攻擊。在生産環境中,請始終使用HTTPS。如果啟用Content Trust with Notary來正确簽名所有圖像,則必須使用HTTPS。
要配置HTTPS,必須建立SSL證書。您可以使用由受信任的第三方CA簽名的證書,也可以使用自簽名證書
生成證書頒發機構證書
在生産環境中,您應該從CA獲得證書。在測試或開發環境中,您可以生成自己的CA。要生成CA憑證,請運作以下指令。
生成CA憑證私鑰。
openssl genrsa -out ca.key 4096
生成CA憑證
調整
-subj
選項中的值以反映您的組織。如果使用FQDN連接配接Harbor主機,則必須将其指定為通用名稱(
CN
)屬性。
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.od.com" \
-key ca.key \
-out ca.crt
如果是ip通路, 将
harbor.od.com
改成 ip位址
生成伺服器證書
證書通常包含一個
.crt
檔案和一個
.key
檔案
生成私鑰
openssl genrsa -out harbor.od.com.key 4096
生成證書簽名請求(CSR)
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.od.com" \
-key harbor.od.com.key \
-out harbor.od.com.csr
harbor.od.com
生成一個x509 v3擴充檔案
無論您使用FQDN還是IP位址連接配接到Harbor主機,都必須建立此檔案,以便可以為您的Harbor主機生成符合主題備用名稱(SAN)和x509 v3的證書擴充要求。替換
DNS
條目以反映您的域
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=harbor.od.com
DNS.2=harbor.od.com
DNS.3=harbor.od.com
EOF
- 如果是ip通路
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = IP:192.168.56.15
EOF
使用該
v3.ext
檔案為您的Harbor主機生成證書
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in harbor.od.com.csr \
-out harbor.od.com.crt
harbor.od.com
提供證書給Harbor和Docker
生成後
ca.crt
,
harbor.od.com.crt
和
harbor.od.com.key
檔案,必須将它們提供給
Harbor
docker
,重新配置它們
将伺服器證書和密鑰複制到Harbor主機上的
/data/cert/
檔案夾中
mkdir -p /data/cert/
cp harbor.od.com.crt /data/cert/
cp harbor.od.com.key /data/cert/
轉換
harbor.od.com.crt
為
harbor.od.com.cert
,供Docker使用
openssl x509 -inform PEM -in harbor.od.com.crt -out harbor.od.com.cert
将伺服器證書,密鑰和CA檔案複制到Harbor主機上的Docker證書檔案夾中。您必須首先建立适當的檔案夾
mkdir -p /etc/docker/certs.d/harbor.od.com/
cp harbor.od.com.cert /etc/docker/certs.d/harbor.od.com/
cp harbor.od.com.key /etc/docker/certs.d/harbor.od.com/
cp ca.crt /etc/docker/certs.d/harbor.od.com/
如果将預設
nginx
端口443 映射到其他端口,請建立檔案夾
/etc/docker/certs.d/yourdomain.com:port
或
/etc/docker/certs.d/harbor_IP:port
重新啟動Docker Engine
systemctl restart docker
證書目錄結構
/etc/docker/certs.d/
└── harbor.od.com
├── ca.crt
├── harbor.od.com.cert
└── harbor.od.com.key
Harbor将
nginx
執行個體用作所有服務的反向代理。您可以使用
prepare
腳本來配置
nginx
為使用HTTPS
./prepare
初始化服務
sh install.sh
停止并删除服務
docker-compose down -v
重新開機服務
docker-compose up -d
連接配接驗證
docker登入
3.4 Harbor部署應用
上傳鏡像到Harbor服務中
在Web服務中建立項目和使用者
建立使用者
然後項目配置設定使用者
推送鏡像到Harbor倉庫中
docker tag redis:latest 192.68.56.10/dpb/redis-dpb:1.0
docker push 192.168.56.10/dpb/redis-dpb:1.0
在Web項目中可以看到上傳的鏡像
從Harbor鏡像倉庫拉取鏡像
執行拉取指令
搞定~