1 使用registry鏡像
1.1 搭建私有倉庫
1.1.1 拉取鏡像
docker pull registry
1.1.2 映射目錄
默認情況下,Registry存放鏡像的目錄是/var/lib/registry
劈猿,如果容器被刪除,則存放在容器中的鏡像也會丟失朝氓。所以映射一個host的目錄到容器的/var/lib/registry
,使用-v
參數(shù)
1.1.3 映射端口
Registry服務默認使用5000
端口
1.1.4 拉起registry容器
將host目錄/opt/registry
映射給鏡像目錄/var/lib/registry
docker run -d --name registry \
-p 5000:5000 \
--restart always \
--name registry \
-v /opt/registry:/var/lib/registry \
registry
1.1.5 查看私有倉庫列表
訪問http://host主機IP地址:5000/v2/_catalog
,沒有鏡像時,返回{"repositories":[]}
1.2 使用私有倉庫
配置/etc/docker/daemon.json
文件梆造,insecure-registries
代表是http模式的倉庫
mkdir -p /etc/docker/
cat > /etc/docker/daemon.json <<EOF
{
"insecure-registries" : ["172.16.19.53:5000"]
}
EOF
1.3 上傳鏡像
1.3.1 給鏡像打tag
docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]
示例:
為busybox:latest
鏡像打tag,新tag表明屬于172.16.19.53:5000
倉庫葬毫,新名稱為busybox
镇辉,版本為v1
docker tag busybox:latest 172.16.19.53:5000/busybox:v1
1.3.2 上傳鏡像
docker push [OPTIONS] NAME[:TAG]
docker push 172.16.19.53:5000/busybox:v1
1.3.3 檢查倉庫中的鏡像
訪問http://172.16.19.53:5000/v2/_catalog
curl http://172.16.19.53:5000/v2/_catalog
{"repositories":["busybox"]}
1.3.4 檢查倉庫中鏡像的版本
訪問http://172.16.19.53:5000/v2/鏡像名/tags/list
1.4 下載鏡像
docker pull 172.16.19.53:5000/busybox:v1
在拉取私有倉庫的鏡像時,需要寫出全部的REGISTRY_HOST(172.16.19.53)
供常、REGISTRY_PORT(5000)
摊聋、TAG(v1)
信息鸡捐。
1.5 刪除鏡像
進入registry容器
docker exec -it registry /bin/sh
刪除repo
rm -rf /var/lib/registry/docker/registry/v2/repositories/鏡像名
清除blob
registry garbage-collect /etc/docker/registry/config.yml
1.6 使用基礎認證
生成秘鑰文件
yum install -y httpd-tools
mkdir -p /opt/registry-var/auth/
htpasswd -Bbn 用戶名 密碼 > /opt/registry-var/auth/htpasswd
啟動registry容器
docker run -d \
-p 5000:5000 \
--restart=always \
--name registry \
-v /opt/registry-var/auth:/auth \
-v /opt/registry:/var/lib/registry \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
registry
2 使用Harbor
2.1 安裝
下載最新版本的安裝包https://github.com/goharbor/harbor/releases/
wget https://github.com/goharbor/harbor/releases/download/v2.3.2/harbor-offline-installer-v2.3.2.tgz
解壓縮壓縮包
tar -zxvf harbor-offline-installer-v2.3.2.tgz
安裝時的配置文件harbor.yml
修改
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
...
# 修改hostname
hostname: 172.16.19.53
# 修改系統(tǒng)admin密碼
harbor_admin_password: 123456
# 如果是http部署栈暇,將以下https的內(nèi)容注釋掉
#https:
# # https port for harbor, default is 443
# port: 443
# # The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path
運行安裝腳本,需確保80和443端口沒有被占用箍镜,且沒有與nginx
源祈、harbor-jobservice
、harbor-core
色迂、redis
香缺、harbor-portal
、harbor-db
歇僧、registryctl
图张、registry
锋拖、harbor-log
同名的容器正在運行
./install.sh
2.2 Harbor web端使用
Harbor以項目管理鏡像,登陸頁面http://172.16.19.53后新建項目祸轮,后續(xù)上傳下載鏡像在項目中
2.2.1 新建項目
項目公開時兽埃,不需要docker login就可以拉取鏡像
2.2.2 推送鏡像
首先配置daemon.json
,添加私有倉庫
vim /etc/docker/daemon.json
{
...,
"insecure-registries" : ["172.16.19.53"]
}
給鏡像打標簽
語法docker tag SOURCE_IMAGE[:TAG] 172.16.19.53/項目/REPOSITORY[:TAG]
docker tag busybox:latest 172.16.19.53/test/busybox:v1
登陸私有倉庫
docker login 172.16.19.53
推送鏡像
docker push 172.16.19.53/test/busybox:v1
2.2.3 下載鏡像
2.3 配置https
安裝時的配置文件harbor.yml
修改
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
...
# 修改hostname
hostname: bigsky.tk
# 修改系統(tǒng)admin密碼
harbor_admin_password: 123456
https:
# https port for harbor, default is 443
port: 443
# 填寫服務器證書和私鑰的路經(jīng)
certificate: /root/server.crt
private_key: /root/server.key
如果是自簽名的證書适袜,需要將服務器的證書柄错、私鑰、CA的證書拷貝到/etc/docker/certs.d/bigsky.tk/
目錄下苦酱,服務器的證書為.cert
后綴售貌,服務器私鑰為.key
后綴,CA的證書為.crt
后綴疫萤。
文件結構如下
/etc/docker/certs.d/
└── bigsky.tk
├── CA.crt
├── server.cert
└── server.key
停止harbor颂跨,重啟docker
cd /root/harbor && docker-compose down
systemctl restart docker
docker-compose up -d
修改服務器hosts文件
vim /etc/hosts
...
172.16.19.53 bigsky.tk
登陸和push、pull時使用域名bigsky.tk
docker login bigsky.tk
docker tag registry bigsky.tk/test/registry
docker push bigsky.tk/test/registry
docker pull bigsky.tk/test/registry:latest