【摘要】本篇文章主要分享一个小白如何快速的维护好公司的Harbor服务器。
【文章来源】:《Harbor进阶实战》公众号
本文已参与「开源摘星计划」,欢迎正在阅读的你加入。 活动链接:github.com/weopenproje…
场景
公司的Harbor服务器突然出现故障,服务异常!负责维护的人跟女朋友去酒店开房了,无法联系。
值班的人员对Harbor也不熟悉。那么,如何防止这种情况的发生呢?
本篇文章总结Harbor常用的管理操作,就算小白不知道对Harbor不熟,也可以完成一些基础的管理操作。
\
1、连接到Harbor服务器的主机
虽然Harbor提供丰富的安装方式,但在企业的业务场景中,使用较多的还是【离线安装】的,即在某台物理主机(服务器)上部署Harbor服务。
本文也主要分享这种部署方式的维护。
要想维护,首先得知道Harbor服务器的IP地址,以及连接这台主机的用户名和密码。
\
2、找到Harbor服务的服务目录
Harbor服务是使用docker-compose的方式启动的容器,需要进入到Harbor的部署的目录里面。
- 查询Harbor部署目录在哪?
[root@Over ~]# sudo find / -name harbor.yml -type f
/app/harbor/harbor.yml
根据harbor的配置文件来查找harbor的部署目录。再cd进入到该目录里面。
[root@Over ~]# cd /app/harbor
[root@Over harbor]# ls
common data harbor.yml install.sh
manifest.json muli.com.crt muli.com.key repositories
common.sh docker-compose.yml harbor.yml.tmpl
LICENSE metrics.txt muli.com.csr prepare
\
3、查看Harbor服务状态
[root@Over harbor]# docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------------------------------------------
chartmuseum ./docker-entrypoint.sh Up (healthy)
harbor-core /harbor/entrypoint.sh Up (healthy)
harbor-db /docker-entrypoint.sh 96 13 Up (healthy)
harbor-exporter /harbor/entrypoint.sh Up
harbor-jobservice /harbor/entrypoint.sh Up (healthy)
harbor-log /bin/sh -c /usr/local/bin/ ... Up (healthy) 127.0.0.1:1514->10514/tcp
harbor-portal nginx -g daemon off; Up (healthy)
nginx nginx -g daemon off; Up (healthy) 0.0.0.0:4443->4443/tcp, 0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp,
0.0.0.0:9090->9090/tcp
notary-server /bin/sh -c migrate-patch - ... Up
notary-signer /bin/sh -c migrate-patch - ... Up
redis redis-server /etc/redis.conf Up (healthy)
registry /home/harbor/entrypoint.sh Up (healthy)
registryctl /home/harbor/start.sh Up (healthy)
trivy-adapter /home/scanner/entrypoint.sh Up (healthy)
Name列:Harbor中每个组件的名称;
Command列:启动组件的命令和参数;
State列:组件的服务状态,up表示正常,也主要是看该列。这里有问题就表示某个组件异常了。
\
4、如何将镜像上传到Harbor上?
- 找台跟Harbor服务器能通的主机(或者Harbor主机亦可);
- 主机安装有docker服务;
- docker配置文件中指定harbor服务器地址;
- docker login 登录harbor服务器;
- 将镜像通过docker load -i 上传到本地;
- 将镜像重新打tag为:harbor地址:端口/项目名称/镜像名称:镜像标签 的格式
- docker push 推送刚tag好的镜像到Harbor中;
\
4.1 docker配置文件中添加harbor服务器信息
[root@Over harbor]# vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://registry.docker.cn.com"],
"insecure-registries": ["192.168.2.250:443"]
}
添加insecure-registries这一行,[]的内容为Harbor的地址和服务端口。
注意该行的前面一行的末尾处要有逗号。
4.2 重新加载docker服务的配置并重启docker服务
[root@Over harbor]# systemctl daemon-reload
[root@Over harbor]# systemctl restart docker
\
4.3 命令行登录Harbor
[root@Over harbor]# docker login 192.168.2.250:443
Authenticating with existing credentials...
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
4.4 导入镜像包到本地
将封装好的镜像包到本地,本处以nginx.tar.gz为例。
[root@Over harbor]# docker load -i tomcat.tar.gz
[root@Over harbor]# docker ps //查看本地的镜像
tomcat 8.5.34-jre8-alpine 4ac473a3dd92 3 years ago 108MB
4.5 给镜像打Tag
将刚才导入到本地主机的tomcat镜像tag成lidabai项目(Project)中,tag就需要打为:
# docker tag tomcat:8.5.34-jre8-alpine 192.168.2.250:443/lidabai/tomcat:8.5.34-jre8-alpine
如果要上传到哪个项目中,就需要将lidabai改成对应的项目名称(前提是Harbor中已经存在该项目)
\
4.6 将Tag好的镜像Push到Harbor中
docker push 192.168.2.250:443/lidabai/tomcat:8.5.34-jre8-alpine
镜像上传完成!
\
5、重启Harbor服务器
- 先停止Harbor服务器
[root@Over harbor]# docker-compose down
- 启动Harbor服务器
[root@Over harbor]# docker-compose up -d
- 然后再检查Harbor服务状态
[root@Over harbor]# docker-compose ps
\
\
\
\