Linuzb' 的博客

记录学习点滴

05 Jun 2024

Docker Compose Deploy Harbor

下载 harbor 安装器

首先到官方 release 页面查找对应的版本号,使用以下命令下载

1
2
3
4
5
export HARBOR_VERSION=2.9.4
wget https://github.com/goharbor/harbor/releases/download/v${HARBOR_VERSION}/harbor-offline-installer-v${HARBOR_VERSION}.tgz
tar xvf harbor-offline-installer-v${HARBOR_VERSION}.tgz
cd harbor
mv harbor.yml.tmp harbor.yml  

编辑 harbor.yml

1
vim harbor.yml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 将 hostname 设置成自己的域名或者 ip
hostname: 172.16.0.115

http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  # 修改端口
  port: 6060

# 如果没有 https 可以将 https 相关的配置注释
# https related config
# 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

# The default data volume
data_volume: /data

详细内容参考文档 Configure the Harbor YML File

生成配置并部署 docker compose

执行以下命令

1
sudo ./install.sh

部署完成后即可通过 url 访问,本例中是 http://172.16.0.155:6060

默认密码查看文档 Configure the Harbor YML File

客户端

配置私有镜像仓库

修改 /etc/docker/daemon.json 文件,添加 insecure-registries

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
{
    "runtimes": {
        "nvidia": {
            "args": [],
            "path": "nvidia-container-runtime"
        }
    },
    "registry-mirrors": [
      "https://docker.m.daocloud.io",
      "https://dockerproxy.com",
      "https://docker.mirrors.ustc.edu.cn",
      "https://docker.nju.edu.cn"
    ],
    "insecure-registries": [
      "172.16.0.115:6060"
    ]
}

重启容器

sudo systemctl daemon-reload
sudo systemctl restart docker

登录 harbor

1
2
3
4
docker login 172.16.0.155:6060 -u admin

# 输入密码
Harbor12345

推送镜像

1
2
# docker tag image_id(本地需要push的镜像) ip:port/项目名/保存的镜像名(例如:xxx:version1)
docker tag goharbor/harbor-exporter:v2.9.4 172.16.0.155:6060/library/goharbor/harbor-exporter:v2.9.4

拉取镜像

1
2
# docker pull ip:port/项目名/保存的镜像名(例如:xxx:version1)
docker pull 172.16.0.155:6060/library/goharbor/harbor-exporter:v2.9.4

公开镜像可以无需登录 harbor 即可拉取

代理镜像仓库

我们可以使用代理缓存功能让一些访问受限环境能够访问互联网上的镜像,并且如果没有某个镜像,此时客户端第一次发起pull image 请求会从指定的代理仓库下载并缓存到harbor的仓库里,下次别的客户端再需要pull 这个镜像就无需从公网再去下载该镜像了,从而避免占用过多带宽或被docker hub 速率限制。

具体操作参考文档 使用harbor代理缓存docker hub

参考

Next time, we'll talk about "What Tiger King can teach us about x86 Assembly"