Harbor的安装与使用
0.啥是Harbor
Harbor是一个开放源代码容器映像注册表,可通过基于角色的访问控制来保护映像,扫描映像中的漏洞并将映像签名为受信任。作为CNCF孵化项目,Harbor提供合规性,性能和互操作性,以帮助您跨Kubernetes和Docker等云原生计算平台持续,安全地管理映像。
说白了Harbor就是一个企业级的私有Docker镜像仓库,一个基于Docker Registry的更高级封装。
Harbor官网
1.安装Harbor
安装这玩意必须要安装Docker 和 Docker Compose (后面这玩意我没安装过,感觉安装上Docker-Ce就附带上了);
这玩意分在线安装和离线安装,两种安装方式都各有各的好处;
可以在Github中找一个你喜欢的版本
安装包下载地址
mkdir /etc/harbor
cd /etc/harbor
wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-online-installer-v1.9.0.tgz
tar xvf harbor-online-installer-v1.9.0.tgz
ls #在我这个老版本应该就是在这个目录下,要是有其他目录,就进去在执行ls查看文件
安装包下载后应该可以看到这些个文件
common docker-compose.yml harbor.yml install.sh LICENSE prepare
harbor.yml 是配置文件
install.sh 是安装文件
prepare 是配置文件修改后更新配置的执行文件
2.修改Harbor配置
Harbor的存储是pg和Redis的,如果你有这两个东西了其实可以将Harbor的存储用自己的库
只需要按照配置文件去给数据库地址和账号密码就行了,配置文件贴在下面
# Uncomment external_database if using external database.
# external_database:
# harbor:
# host: harbor_db_host
# port: harbor_db_port
# db_name: harbor_db_name
# username: harbor_db_username
# password: harbor_db_password
# ssl_mode: disable
# max_idle_conns: 2
# max_open_conns: 0
# clair:
# host: clair_db_host
# port: clair_db_port
# db_name: clair_db_name
# username: clair_db_username
# password: clair_db_password
# ssl_mode: disable
# notary_signer:
# host: notary_signer_db_host
# port: notary_signer_db_port
# db_name: notary_signer_db_name
# username: notary_signer_db_username
# password: notary_signer_db_password
# ssl_mode: disable
# notary_server:
# host: notary_server_db_host
# port: notary_server_db_port
# db_name: notary_server_db_name
# username: notary_server_db_username
# password: notary_server_db_password
# ssl_mode: disable
# Uncomment external_redis if using external Redis server
# external_redis:
# host: redis
# port: 6379
# password:
# # db_index 0 is for core, it's unchangeable
# registry_db_index: 1
# jobservice_db_index: 2
# chartmuseum_db_index: 3
如果你没有现成的PG和Redis就要注意下面的这些配置
data_volume: /data
注意这个配置,这里会将Postgres的文件和Redis的文件全部挂载到这个目录下。
注意:请谨慎选择这个位置,要选择一个盘大的地方,不然很容易就满了
下面是数据库的密码和最大连接数配置
# Harbor DB configuration
database:
# The password for the root user of Harbor DB. Change this before any production use.
password: root123
# The maximum number of connections in the idle connection pool. If it <=0, no idle connections are retained.
max_idle_conns: 50
# The maximum number of open connections to the database. If it <= 0, then there is no limit on the number of open connections.
# Note: the default number of connections is 100 for postgres.
max_open_conns: 100
harbor_admin_password: Harbor12345
这个就是UI界面 admin的管理密码
hostname: 192.168.1.203
这个配置写对公的IP地址/域名,千万不要写127.0.0.1
下面的端口号这些有条件的朋友就直接用80和443不要修改,改了有莫名其妙的问题
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
# 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
``
vi ./harbor.yml
# 改一下你需要改的配置
然后启动就完事了
sh ./install #第一次安装的时候 要执行这个命令,执行完这个命令可以不执行启动命令的,会帮你自动启动的
docker-compose up -d # 启动
docker-compose down 关闭
docker-compose ps #查看运行状态
# 看到全部是Up的就起来了
Name Command State Ports
--------------------------------------------------------------------------------------
harbor-core /harbor/harbor_core Up
harbor-db /docker-entrypoint.sh Up 5432/tcp
harbor-jobservice /harbor/harbor_jobservice ... Up
harbor-log /bin/sh -c /usr/local/bin/ ... Up 127.0.0.1:1514->10514/tcp
harbor-portal nginx -g daemon off; Up 8080/tcp
nginx nginx -g daemon off; Up 0.0.0.0:80->8080/tcp
redis redis-server /etc/redis.conf Up 6379/tcp
registry /entrypoint.sh /etc/regist ... Up 5000/tcp
registryctl /harbor/start.sh Up
输入刚刚定义的HostIP:Port 看到下面的界面就可以了
image.png
然后默认账户是admin 密码没改就是Harbor12345 改了就是你改的那个。
登录进去就是这样子的。
image.png
3.使用Harbor
这个UI说实在话还是非常的人性的
image.png
这个位置可以复制 Pull命令
然后上传的话就要先登录才能Push
docker pull 192.168.1.203/test/test-nginx:V1.1.3 # 拉取
docker login 192.168.1.203 # 输入账号和密码就可以登录
docker push 192.168.1.203/test/test-nginx:V1.1.4 # 上传
其他的高端操作就可以看官方文档了。
这里如果你没有证书的话 要在客户端的机器上配置信任这个仓库,才能进行推送和拉取
vi /etc/docker/daemon.json
{
"insecure-registries":["192.168.1.203"]
}
systemctl restart docker
剩下的路就要靠自己摸索了。
这是我在装完后测试没问题了才出的教程,基本纯手打,可能有出现错误的单词,请各位见谅