「开源摘星计划」Harbor运维笔记,如何维护好公司的Harbor服务?

1,416 阅读3分钟

【摘要】本篇文章主要分享一个小白如何快速的维护好公司的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

\

\

\

\