Harbor服务器:192.168.188.11 docker-ce、docker-compose、harbor-offline-v1.2.2
Client:192.168.188.17 docker-ce
关闭防火墙
systemctl stop firewalld
setenforce 0
下载或上传Docker-compose
下载:curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-uname -s
-uname -m
-o /usr/local/bin/docker-compose
上传放在/usr/local/bin/目录下
cp /opt/docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose
能看到版本没问题
下载或上传harbor安装程序
下载:wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
vim /usr/local/harbor/harbor.cfg
修改hostname为自己harbor服务器的IP地址(域名也行)
指定管理员的初始密码,默认用户名/密码是admin/Harbor12345,这里可以自定义
启动harbor
cd /usr/local/harbor/
为harbor启动的容器生成一些必要的文件(环境)
./prepare
pull镜像并启动容器
./install.sh
查看harbor启动镜像
cd /usr/local/harbor/
docker-compose ps
浏览器访问http://192.168.188.11登录Harbor WEB UI界面,默认的管理员用户名和密码是 admin/Harbor12345
创建新项目
此时可使用Docker命令在本地通过127.0.0.1来登录和推送镜像。默认情况下Registry服务器在端口80上
登录Harbor
docker login -u admin -p Harbor12345 http://127.0.0.1
下载镜像进行测试
docker pull nginx
给镜像打标签
docker tag nginx:latest 127.0.0.1/myproject-tsh/nginx:v1
测试能不能通过新标签上传镜像
docker push 127.0.0.1/myproject-tsh/nginx:v1
此时在浏览器的Harbor界面的myproject-tsh目录下就可以看见这个镜像了
上面的操作都是在Harbor服务器本地完成,现在模拟客户端登录Harbor
在Client上登录
docker login -u admin -p Harbor12345 http://192.168.188.11
此时报错,原因Docker Registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,所以与私有镜像交互时出现错误
解决办法是:在Docker server启动的时候,增加启动参数,默认使用HTTP访问
vim /usr/lib/systemd/system/docker.service
重启Docker
systemctl daemon-reload
systemctl restart docker
再次登录
docker login -u admin -p Harbor12345 http://192.168.10.23
下载镜像
docker pull 192.168.188.11/myproject-tsh/nginx:v1
上传镜像
从library仓库下载cirros镜像
docker pull cirros
为cirros镜像打上新的标签
docker tag cirros:latest 192.168.10.23/myproject-kgc/cirros:v2
上传新镜像
docker push 192.168.10.23/myproject-kgc/cirros:v2
浏览器查看
项目如果设置为私有,则必须执行Docker login才能下载镜像
创建用户并分配权限
添加项目成员
客户端上使用普通账户操作镜像
先把本地镜像里的cirror:v2删了方便后续测试
docker rmi 192.168.188.11/myproject-tsh/cirros:v2
如果已经登录了就先退出
docker logout 192.168.188.11
然后使用刚刚创建的账户登录
docker login -u tsh -p DzD123456 http://192.168.188.11
测试下载和上传
docker pull 192.168.188.11/myproject-tsh/cirror:v2
docker tag cirros:latest 192.168.188.11/myproject-tsh/cirrors:v3
docker push 192.168.188.11/myproject-tsh/cirrors:v3
要更改Harbor配置文件中的可选参数时,需要先停止现有的Harbor实例并更新Harbor.cfg;然后运行prepare脚本来填充配置;最后重新创建并启动Harbor的实例
在Harbor服务器上操作
cd /usr/local/harbor
docker-compose down -v
只能修改可选参数
vim harbor.cfg
修改完后再启动
./prepare
docker-compose up -d
移除 Harbor 服务容器同时保留镜像数据/数据库,并进行迁移
cd /usr/local/harbor
docker-compose down -v
打包数据
ls /data/registry/docker/registry/v2/repositories/myproject-kgc
cd /data/registry/docker/registry/v2/repositories/myproject-kgc
tar zcvf kgc-registry.tar.gz ./*
如需重新部署,需要移除 Harbor 服务容器全部数据
所需参数与可选参数
所需参数:这些参数需要在配置文件Harbor.cfg中设置。如果用户更新它们并运行install.sh脚本重新安装Harbor,参数将生效,具体参数如下:
●hostname:用于访问用户界面和register服务。它应该是目标机器的IP地址或完全限定的域名,例如192.168.188.11或cloud.tsh.cn。不要使用localhost或127.0.0.1为主机名。
●ui_url_protocol:(http或https,默认为http)用于访问UI和令牌/通知服务的协议。如果公证处于启用状态,则此参数必须为https。
●max_job_workers:镜像复制作业线程。
●db_password:用于db_auth的MySQL数据库root用户的密码。
●customize_crt:该属性可设置为打开或关闭,默认打开。打开此属性时,准备脚本创建私钥和根证书,用于生成/验证注册表令牌。当由外部来源提供密钥和根证书时,将此属性设置为 off。
●ssl_cert:SSL证书的路径,仅当协议设置为 https 时才应用。
●secretkey_path:用于在复制策略中加密或解密远程register密码的密钥路径
可选参数:这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动Harbor后再在Web UI上进行更新。如果进入Harbor.cfg,只会在第一次启动Harbor时生效,随后对这些参数的更新,Harbor.cfg将被忽略,如果选择启动harbor后再在Web上更改,请在第一时间修改,具体参数如下:
●Email:Harbor需要该参数才能向用户发送“密码重置”电子邮件,并且只有在需要该功能时才启用。请注意,在默认情况下SSL连接时没有启用。如果SMTP服务器需要SSL,但不支持STARTTLS,那么应该通过设置启用SSL email_ssl = TRUE。
●harbor_admin_password:管理员的初始密码,只在Harbor第一次启动时生效。之后, 此设置将被忽略,并且应在UI中设置管理员的密码。请注意,默认的用户名/密码是admin/Harbor12345。
●auth_mode:使用的认证类型,默认情况下,它是db_auth,即凭据存储在数据库中。对于LDAP身份验证,请将其设置为ldap_auth。
●self_registration:启用/禁用用户注册功能。禁用时,新用户只能由Admin用户创建,只有管理员用户可以在Harbor中创建新用户。注意:当auth_mode设置为ldap_auth时,自注册功能将始终处于禁用状态,并且该标志被忽略。
●Token_expiration:由令牌服务创建的令牌的到期时间(分钟),默认为30分钟。
●project_creation_restriction:用于控制哪些用户有权创建项目的标志。默认情况下,每个人都可以创建一个项目。如果将其值设置为“adminonly”,那么只有admin可以创建项目。
●verify_remote_cert:打开或关闭,默认打开。此标志决定了当Harbor与远程register实例通信时是否验证SSL/TLS证书。 将此属性设置为off将绕过SSL/TLS验证,这在远程实例具有自签名或不可信证书时经常使用。