harbor镜像仓库搭建配置
1.安装docker-compose(已经安装省略)
1. 下载
在 Linux 上的也安装十分简单,从 官方 GitHub Release 处直接下载编译好的二进制文件即可。
例如,在 Linux 64 位系统上直接下载对应的二进制包。
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 国内用户可以使用以下两种方式加快下载
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.授权并做软连接到/usr/bin
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功:
[root@gzbsc001 bin]# docker-compose -version
docker-compose version 1.29.2, build 5becea4c
3.bash 补全提示命令
$ curl -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
2.Harbor 安装:
Harbor 官方地址:https://github.com/goharbor/harbor/releases
1、下载,解压软件包:
wget https://github.com/goharbor/harbor/releases/download/v1.10.9/harbor-offline-installer-v1.10.9.tgz
tar -zxvf harbor-offline-installer-v1.10.9.tgz
cp -r harbor /usr/local/
2.修改harbor.yml
文件
#修改以下内容
hostname: hub.cmcc.com #目标主机的主机名,例如,192.168.1.10或reg.yourdomain.com
http:
# port for http, default is 80
port: 28080 #因为本机已经有80
https:
# https port for harbor, default is 443
port: 443 #因为本机443 没占用
certificate: /usr/local/harbor/cert/server.crt #需要生成的证书
private_key: /usr/local/harbor/cert/server.key #需要生成的证书
harbor_admin_password = harbor12345 #修改harbor的admin用户的密码
data_volume: /harbor/data #修改harbor存储位置
3. 创建 https 证书以及配置相关目录
3.1创建根证书私钥 server.key
openssl genrsa -des3 -out server.key 2048
回车,输入密码,确认密码
3.2 利用私钥,创建证书请求文件(CSR)
openssl req -new -key server.key -out server.csr
回车,输入密码,国家:CN,省份/city:BJ,域名:hub.cmcc.com (这里的域名等于harbor.yml的hostname)...后面的我忘记了....
3.3 备份,删除密码(因为nginx不支持带密码的证书)
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
3.4生成自签名证书
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
到这里我们的证书就已经创建成功了.(server.key 和 server.crt) 可以直接用到https的server中了.
3.运行脚本进行安装
./install.sh
4.访问测试
设置/etc/hosts
echo "192.168.31.101 hub.cmcc.com" >> /etc/hosts
https://hub.cmcc.com的管理员门户(将hub.cmcc.com更改为您的主机名harbor.cfg)。
请注意,默认管理员用户名/密码为admin/Harbor12345(我已经修改成:harbor12345),此密码仅在Harbor首次启动时生效。之后修改也无效啦..将忽略此设置
上传镜像进行上传测试
4.1 修改指定镜像仓库地址 (信任关系)
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
],
"insecure-registries": ["https://hub.cmcc.com"]
}
在应用docker越来越深入的时候,必然涉及这部分的内容。即要从国内快速下载镜像,又需要将一些镜像上传到公司内部(离线)的非安全仓库时,就派上用场了。
重新加载配置文件:systemctl daemon-reload
启动docker:systemctl restart docker
4.2下载测试镜像
docker pull hello-world
4.3 给镜像重新打标签
docker tag hello-world hub.cmcc.com/library/hello-world:latest
4.4 登录进行上传
docker login https://hub.cmcc.com
docker push hub.cmcc.com/library/hello-world:latest
[root@gzbsc001 harbor]# docker login https://hub.cmcc.com
Username: glj
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[root@gzbsc001 harbor]# docker push hub.cmcc.com/library/hello-world:latest
The push refers to repository [hub.cmcc.com/library/hello-world]
e07ee1baac5f: Pushed
latest: digest: sha256:f54a58bc1aac5ea1a25d796ae155dc228b3f0e11d046ae276b39c4bf2f13d8c4 size: 525
[root@gzbsc001 harbor]#
harbor.yml 参数描述
必选参数
描述 | ||
---|---|---|
hostname | 目标主机的主机名,用于访问Portal和注册表服务。 它应该是目标计算机的IP地址或完全限定的域名(FQDN),例如,192.168.1.10或reg.yourdomain.com。不要使用localhost或127.0.0.1作为主机名 - 外部客户端需要访问注册表服务! | |
data_volume | 存储数据的位置 | |
harbor_admin_password | 管理员的初始密码。此密码仅在Harbor首次启动时生效。之后,将忽略此设置,并且应在Portal中设置管理员密码。请注意,默认用户名/密码为admin / Harbor12345。 | |
database | ||
password | 用于db_auth的PostgreSQL数据库的root密码。更改此密码以用于任何生产用途! | |
- | ||
jobservice | ||
max_job_workers | 作业服务中的最大复制工作者数。对于每个映像复制作业,工作程序将存储库的所有标记同步到远程目标。增加此数量可以在系统中执行更多并发复制作业。但是,由于每个工作者都消耗一定量的网络/ CPU / IO资源,请根据主机的硬件资源仔细选择该属性的值。 | |
- | ||
log | ||
level | 日志级别,选项是调试,信息,警告,错误,致命 | |
rotate_count | 日志文件在被删除之前被轮换为log_rotate_count次。如果count为0,则删除 | |
log_rotate_size | 仅当日志文件大于log_rotate_size字节时才会轮换日志文件。如果大小后跟k,则假定大小以千字节为单位。如果使用M,则大小以兆字节为单位,如果使用G,则大小以千兆字节为单位。尺寸100,尺寸100k,尺寸100M和尺寸100G都是有效的 | |
location | 存储中日志的目录 |
可选参数
描述 | |||
---|---|---|---|
http | |||
port | http的端口号 | ||
- | |||
https | |||
port | https的端口号 | ||
certificate | SSL证书的路径,仅在协议设置为https时应用 | ||
private_key | SSL密钥的路径,仅在协议设置为https时应用 | ||
- | |||
external_url | 如果使用外部代理,则启用它,当启用时,将不再使用主机名 | ||
- | |||
clair | |||
updaters_interval | clair更新程序的间隔,单位为小时,设置为0以禁用更新程序 | ||
http_proxy | 为Clair配置http代理,例如http://my.proxy.com:3128 | ||
https_proxy | 为Clair配置https代理,例如http://my.proxy.com:3128 | ||
no_proxy | 没有为Clair配置代理,例如127.0.0.1,localhost,core,registry | ||
- | |||
chart | |||
absolute_url | 如果设置为启用图表将使用绝对网址,否则将其设置为禁用,图表将使用相对网址 | ||
- | |||
external_database | 外部数据库配置,目前只支持POSTGRES | ||
harbor | 核心数据库配置 | ||
host | 核心数据库的主机名 | ||
port | 核心数据库端口 | ||
db_name | 港口核心数据库的数据库名称 | ||
username | 用于连接港口核心数据库的用户名 | ||
password | 港口核心数据库的密码 | ||
ssl_mode | 启用ssl模式 | ||
- | - | ||
clair | clair的数据库配置 | ||
host | clair数据库的主机名 | ||
port | clair数据库的端口 | ||
db_name | clair数据库的数据库名称 | ||
username | 用于连接clair数据库的用户名 | ||
password | clair数据库的密码 | ||
ssl_mode | 启用ssl模式 | ||
- | - | ||
notary_signer | 公证人的签名者数据库配置 | ||
host | 公证签名者数据库的主机名 | ||
port | 公证签名者数据库的端口 | ||
db_name | 公证签名者数据库的数据库名称 | ||
username | 用于连接公证签名者数据库的用户名 | ||
password | 公证签名者数据库的密码 | ||
ssl_mode | 启用ssl模式 | ||
- | - | ||
notary_server | |||
host | 公证服务器数据库的主机名 | ||
port | 公证服务器数据库的端口 | ||
db_name | 公证服务器数据库的数据库名称 | ||
username | 用于连接公证服务器数据库的用户名 | ||
password | 公证服务器数据库的密码 | ||
ssl_mode | 启用ssl模式 | ||
external_redis | 配置使用外部redis | ||
host | 外部redis的主机 | ||
port | 外部redis的端口 | ||
password | 用于连接外部主机的密码 | ||
registry_db_index | 注册表使用的db索引 | ||
jobservice_db_index | jobservice的 db索引 | ||
chartmuseum_db_index | chartmuseum的 db索引 |