本文简要介绍私有镜像仓库 Harbor 的搭建指南(HTTP 版),以及使用方法。搭建部分主要参考官网。本文基于以下版本:
Docker: 20.10.12 Docker-compose: 1.29.2 Harbor: 2.4.1
1.准备工作
1.1 安装 Docker 与 Docker Compose
请直接参考官网。这里仅给出在 CentOS 上的例子:
sudo yum install -y yum-utilssudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.reposudo yum install docker-ce docker-ce-cli containerd.iosudo systemctl start dockersudo systemctl enable docker sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose
1.2 安装 OpenSSL
这里仅给出 CentOS 的例子:
yum install -y openssl
2.安装 Harbor
官网给出了两种安装模式,在线安装包或离线安装包。其区别是离线安装包里面含有镜像,在线版本在安装时则去Docker Hub拉取镜像。我们这里使用离线安装包。
wget https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-offline-installer-v2.4.1.tgztar zxvf harbor-offline-installer-v2.4.1.tgzcd harbor
在 harbor 文件夹里可以看到有一份文件 harbor.yml.tmpl,这是 Harbor 的配置信息,我们复制一份并进行修改(以下仅显示修改部分):
cp harbor.yml.tmpl harbor.yml
harbor.yml
# Configuration file of Harbor # The IP address or hostname to access admin UI and registry service.# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.- hostname: reg.mydomain.com+ hostname: your.domain.com (自行指定) # http related confighttp: # port for http, default is 80. If https enabled, this port will redirect to https port port: 80 # https related config# 直接禁用 HTTPS- https:+ # https: # https port for harbor, default is 443- port: 443+ # port: 443 # The path of cert and key files for nginx- certificate: /your/certificate/path- private_key: /your/private/key/path+ # certificate: /your/certificate/path+ # private_key: /your/private/key/path # # Uncomment following will enable tls communication between all harbor components# internal_tls:# # set enabled to true means internal tls is enabled# enabled: true# # put your cert and key files on dir# dir: /etc/harbor/tls/internal # Uncomment external_url if you want to enable external proxy# And when it enabled the hostname will no longer used# external_url: https://reg.mydomain.com:8433 # The initial password of Harbor admin# It only works in first time to install harbor# Remember Change the admin password from UI after launching Harbor.- harbor_admin_password: Harbor12345+ harbor_admin_password: yourPassword (自行指定)
修改完毕后,直接运行 ./install.sh,并等待 Docker Compose 执行完毕。部署完毕后,你就可以使用这台机器的 80 端口看到 Harbor 界面了。如果需要启动 Helm Chart 的管理功能,请使用 ./install.sh --with-chartmuseum。
3.登录与使用方法
在安装 Harbor 的本机,可以直接在 /etc/hosts 里配置,在 127.0.0.1 后面加上你在配置文件里定义的 hostname,随后可以使用如下命令直接登录:
docker login -u admin -p yourPassword http://your.domain.com
上面的密码与 hostname 需要自行替换。
如果在其他机器登录,首先还是需要配 /etc/hosts,将 hostname 指向安装 Harbor 的机器 IP。登录时,可能会遇到如下情况:
$ docker login -u admin -p yourPassword http://your.domain.com Error response from daemon: Get https://your.domain.com/v2/: dial tcp xxx.xxx.xxx.xxx:443: connect: connection refused
这个原因是访问 HTTPS 被拒绝(我们只配置了 HTTP),需要关闭安全验证。修改 /etc/docker/daemon.json 并加入如下内容:
/etc/docker/daemon.json
+ "insecure-registries": ["your.domain.com:port", "0.0.0.0"]
如果是 80 端口号则可以忽略端口部分。修改完毕后,重启 Docker:
sudo systemctl restart docker
必要时,可以在安装 Harbor 的机器上重启 Harbor:
cd harbordocker-compose down -vdocker-compose up -d
再次登录即可正常使用。需要注意,使用 Harbor 时,镜像需要遵循以下:
# Dockerdocker tag SOURCE_IMAGE[:TAG] your.domain.com/PROJECT_NAME/REPOSITORY[:TAG]docker push your.domain.com/PROJECT_NAME/REPOSITORY[:TAG]docker pull your.domain.com/PROJECT_NAME/REPOSITORY[:TAG] # Helmhelm repo add --username admin --password ADMIN_PASSWORD harbor http://your.domain.com/chartrepo/helm plugin install https://github.com/chartmuseum/helm-pushhelm cm-push CHART_PATH --version="CHART_VERSION" harborhelm repo updatehelm search repo CHART_PATHhelm install RELEASE_NAME CHART_NAME
其中 PROJECT_NAME 是你在 Harbor UI 新建的项目名,CHART_PATH 是存储 Helm Chart 的路径,CHART_NAME 是使用 helm search 后搜索到的 Chart 名称,RELEASE_NAME 是 Helm 部署后的自定义名称。