Harbor 开机自启遇到的问题
Harbor 是一个企业级的 Docker 私有仓库项目,使用 docker-compose 启动时,它本身由多个 Docker Containers 组成,通过 docker-compose 管理 containers 之间的依赖关系。
安装
安装参见官方文档:Harbor - Installation and Configuration Guide,
修改 harbor.yml 时,需要注意的有:
- 使用 https 时,要自己生成证书,然后在 harbor.yml 里配置好证书的路径。
- 客户端也需要安装你生成的这个证书,否则会报错。(所以证书要做好备份)
- 详见 Docker - Use self-signed certificates
 
- data_volume 可以指定为 /data/harbor,然后要定期备份这个文件夹。(或者直接在新机器上装个 harbor,用 harbor 自带的仓库复制功能做定期备份。)
- 企业的话,可能还需要配置 ldap 集成验证。
然后 sudo ./install.sh 安装 harbor(貌似必须用 sudo,因为生成出来的配置文件的 owner 都是 root,而且权限设得很严格。)
安装完成后会自动启动 harbor.
自动启动
查看 harbor 目录下的 docker-compose.yml 会发现,所有的 containers 都配置了 restart: always:
version: '2.3'
services:
  log:
    image: goharbor/harbor-log:v1.8.1
    container_name: harbor-log
    restart: always
    dns_search: .
    # ......
  registry:
    image: goharbor/registry-photon:v2.7.1-patch-2819-v1.8.1
    container_name: registry
    restart: always
    # ......
这表示所有的容器在意外关闭后都会自动重启,比如 docker 重启或服务器重启。(手动 stop 不会自动重启)
但是我在手动运行 docker-compose up -d,然后重启服务器后,发现有几个 container 并没有自动重启:
[ryan@ryan-pc ~]$ docker ps -a
CONTAINER ID        IMAGE                                               COMMAND                  CREATED             STATUS                             PORTS                       NAMES
f30d802002a4        goharbor/nginx-photon:v1.8.1                        "nginx -g 'daemon of…"   13 hours ago        Exited (128) 27 minutes ago        0.0.0.0:80->80/tcp          nginx
21472ce8a993        goharbor/harbor-portal:v1.8.1                       "nginx -g 'daemon of…"   13 hours ago        Exited (128) 27 minutes ago        80/tcp                      harbor-portal
5d866bb17c58        goharbor/harbor-jobservice:v1.8.1                   "/harbor/start.sh"       13 hours ago        Exited (137) 26 minutes ago                                    harbor-jobservice
0cf0f93b5a87        goharbor/harbor-core:v1.8.1                         "/harbor/start.sh"       13 hours ago        Up 11 seconds (health: starting)                               harbor-core
cba280d9b945        goharbor/redis-photon:v1.8.1                        "docker-entrypoint.s…"   13 hours ago        Exited (137) 26 minutes ago        6379/tcp                    redis
473e46d1f746        goharbor/harbor-registryctl:v1.8.1                  "/harbor/start.sh"       13 hours ago        Up 11 seconds (health: starting)                               registryctl
51f105f1691d        goharbor/registry-photon:v2.7.1-patch-2819-v1.8.1   "/entrypoint.sh /etc…"   13 hours ago        Exited (137) 26 minutes ago        5000/tcp                    registry
c41594ec7779        goharbor/harbor-db:v1.8.1                           "/entrypoint.sh post…"   13 hours ago        Up 11 seconds (health: starting)   5432/tcp                    harbor-db
713bd4961772        goharbor/harbor-log:v1.8.1                          "/bin/sh -c /usr/loc…"   13 hours ago        Up 11 seconds (health: starting)   127.0.0.1:1514->10514/tcp   harbor-log
可以看到下列五个容器都处于 Exited 状态:
- goharbor/nginx-photon:v1.8.1
- goharbor/harbor-portal:v1.8.1
- goharbor/harbor-jobservice:v1.8.1
- goharbor/redis-photon:v1.8.1
- goharbor/registry-photon:v2.7.1-patch-2819-v1.8.1
搜索发现有人提过这个 issue: https://github.com/goharbor/harbor/issues/7008
于是尝试将 harbor 配成 systemd 的 service,添加配置文件 /usr/lib/systemd/system/harbor.service,内容如下:
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/local/bin/docker-compose -f {{ harbor_install_path }}/harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f {{ harbor_install_path }}/harbor/docker-compose.yml down
[Install]
WantedBy=multi-user.target
其中 {{ harbor_install_path }} 换成自己的 harbor 安装路径。
还有 docker-compose 的绝对路径,请通过 which docker-compose 查看。
然后启动该项服务:
sudo systemctl enable harbor
sudo systemctl start harbor
现在查看下 harbor.service 的情况:
● harbor.service - Harbor
   Loaded: loaded (/usr/lib/systemd/system/harbor.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2019-07-07 12:54:27 CST; 2min 4s ago
     Docs: http://github.com/vmware/harbor
 Main PID: 9734 (docker-compose)
    Tasks: 11 (limit: 4915)
   Memory: 35.7M
   CGroup: /system.slice/harbor.service
           └─9734 /usr/bin/python /usr/bin/docker-compose -f /home/ryan/harbor/docker-compose.yml up
7月 07 12:54:30 ryan-pc docker-compose[9734]: [128B blob data]
7月 07 12:54:31 ryan-pc docker-compose[9734]: [167B blob data]
7月 07 12:54:31 ryan-pc docker-compose[9734]: registryctl    | WARNING: no logs are available with the 'syslog' log driver
7月 07 12:54:31 ryan-pc docker-compose[9734]: registry       | WARNING: no logs are available with the 'syslog' log driver
7月 07 12:54:31 ryan-pc docker-compose[9734]: harbor-db      | WARNING: no logs are available with the 'syslog' log driver
7月 07 12:54:31 ryan-pc docker-compose[9734]: redis          | WARNING: no logs are available with the 'syslog' log driver
7月 07 12:54:31 ryan-pc docker-compose[9734]: harbor-core    | WARNING: no logs are available with the 'syslog' log driver
7月 07 12:54:31 ryan-pc docker-compose[9734]: harbor-jobservice | WARNING: no logs are available with the 'syslog' log driver
7月 07 12:54:31 ryan-pc docker-compose[9734]: harbor-portal  | WARNING: no logs are available with the 'syslog' log driver
7月 07 12:54:31 ryan-pc docker-compose[9734]: nginx          | WARNING: no logs are available with the 'syslog' log driver
重启服务器再确认,发现 harbor 容器组终于全部 up 了:
[ryan@ryan-pc ~]$ docker ps -a
CONTAINER ID        IMAGE                                               COMMAND                  CREATED             STATUS                    PORTS                       NAMES
90943210e354        goharbor/nginx-photon:v1.8.1                        "nginx -g 'daemon of…"   37 seconds ago      Up 35 seconds (healthy)   0.0.0.0:80->80/tcp          nginx
bc70706d7b5f        goharbor/harbor-portal:v1.8.1                       "nginx -g 'daemon of…"   38 seconds ago      Up 36 seconds (healthy)   80/tcp                      harbor-portal
54e132bd1a10        goharbor/harbor-jobservice:v1.8.1                   "/harbor/start.sh"       38 seconds ago      Up 36 seconds                                         harbor-jobservice
28ada4a941ee        goharbor/harbor-core:v1.8.1                         "/harbor/start.sh"       39 seconds ago      Up 37 seconds (healthy)                               harbor-core
de44686f7e72        goharbor/registry-photon:v2.7.1-patch-2819-v1.8.1   "/entrypoint.sh /etc…"   39 seconds ago      Up 38 seconds (healthy)   5000/tcp                    registry
e5efdae34c13        goharbor/harbor-db:v1.8.1                           "/entrypoint.sh post…"   39 seconds ago      Up 38 seconds (healthy)   5432/tcp                    harbor-db
a5fe52e1f184        goharbor/harbor-registryctl:v1.8.1                  "/harbor/start.sh"       39 seconds ago      Up 38 seconds (healthy)                               registryctl
4a74b5f3499a        goharbor/redis-photon:v1.8.1                        "docker-entrypoint.s…"   39 seconds ago      Up 38 seconds             6379/tcp                    redis
677fd84d0a70        goharbor/harbor-log:v1.8.1                          "/bin/sh -c /usr/loc…"   40 seconds ago      Up 39 seconds (healthy)   127.0.0.1:1514->10514/tcp   harbor-log
参考
Harbor 开机自启遇到的问题的更多相关文章
- AndroidTV版(乐视超3 X55)root,将自己的软件设置为开机自启、系统软件,卸载系统应用等问题总结
		最近开发android软件客户要安装在乐视TV上,而且要求是开机自启.我很天真的以为写一个广播接收类接收开机广播就可以了,可是根本不会,有的设备就是不可以接收到开机广播,于是各种百度搜索.大神们说是只 ... 
- BroadcastReceiver之(手动代码注册广播)屏幕锁屏、解锁监听、开机自启
		对于解锁和锁屏这种用的比较频繁action,谷歌做了限制,必须手动用代码注册 直接上代码:这是注册广播(手动代码注册广播接收者) public class MainActivity extends A ... 
- 如何关闭windows电脑的开机自启程序
		很多时候我们打开电脑会发现,莫名其妙的出现一些已经在运行的程序了,这都是一些开机自启的软件之类的.可能你的电脑配置本来就不怎么高,开机还这样,那估计会很卡顿,那有什么方法可以关闭这些开机自动启动的程序 ... 
- 如何管理linux开机自启服务
		如何管理linux开机自启服务? 自启动服务非常重要,例如 (1)需要手动添加希望自启的服务,如安装svn后没有自动添加,就需要我们手动加入(2)安装某些程序后,自动加到自启动了,但我们不需要,需要手 ... 
- android 简单的开机自启
		今天我们主要来探讨android怎么让一个service开机自动启动功能的实现.Android手机在启动的过程中会触发一个Standard Broadcast Action,名字叫android.in ... 
- Linux(CentOS6.5)下Nginx注册系统服务(启动、停止、重启、重载等)&设置开机自启
		本文地址http://comexchan.cnblogs.com/ ,作者Comex Chan,尊重知识产权,转载请注明出处,谢谢! 完成了Nginx的编译安装后,仅仅是能支持Nginx最基本的功能, ... 
- Ubuntu设置程序开机自启或者开机禁止加载
		先说说ubuntu,它有运行级别这个概念 0:停机 1:单用户形式,只root进行维护 2:多用户,不能使用net file system 3:完全多用户 5:图形化 6:重启 例子:按指定顺序.在指 ... 
- centos7安装docker并设置开机自启以及常用命令
		Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ... 
- win10 开机自启指定软件
		开机自启 %programdata%\Microsoft\Windows\Start Menu\Programs\StartUp 
随机推荐
- linux命令之------which命令/cp命令/Head及tail命令/grep命令/pwd命令/cd命令/df命令/mkdir命令/mount及umount命令/ls命令/history命令/ifconfig命令/ping命令/useradd命令/命令passwd/kill命令/su命令/clear命令/ssh命令/tar解压缩/远程拷贝scp
			which命令 1) 作用:搜索某个系统命令的位置. 2) 案例:查询vi命令路径:which vi cp命令 1)作用:用于复制文件或目录: 2)-a:此选项通常使用在复制目录时使用,它 ... 
- vue 百度地图多标注展示和点击标注进行的提示
			index.html中加入script <script type="text/javascript" src="http://api.map.baidu.com/a ... 
- 怎么让input默认为0
			<span class="item_title">供应商定金</span> <div class="flex-fill flex" ... 
- jvm(三)指令重排 & 内存屏障 & 可见性 & volatile & happen before
			参考文档: https://tech.meituan.com/java-memory-reordering.html http://0xffffff.org/2017/02/21/40-atomic- ... 
- 阿里云ecs centos yarn 安装
			安装流程:https://yarn.bootcss.com/docs/install/#centos-stable 
- ROLLUP、CUBE、GROUP BY的使用区别
			1.ROLLUP:根据维度在数据结果集中进行的聚合操作,可多维度SELECT count(*) num,MONTH(register_time) times,`status` FROM `user` ... 
- java http get/post请求
			一.http get/post请求 /** * @Description httpPost请求 */ public static String httpPost(String url, String ... 
- some try on func swap about & and *
			import "fmt" func swap(x,y *int ) { //x ,y = y,x //fault /* t := *x *x = *y *y = t */ //tr ... 
- WebGL学习笔记(六):纹理贴图
			只可以绘制纯色的模型是不够的,为了呈现出更真实的模型,我们还需要通过纹理贴图给模型进行上色. 丢失上下文 GPU作为一种公用资源,是会被多个进程同时使用的,在资源不足的情况下(比如PC或手机系统进入休 ... 
- [转]TrueType(TTF)字体文件裁剪(支持简体中文,繁体中文TTF字体裁剪)
			原文入口: TTF字体文件裁剪(支持简体中文,繁体中文TTF字体裁剪) 对于TrueType(TTF)字体格式的介绍可以看: https://www.cnblogs.com/slysky/p/1131 ... 
