0

我有一堆服务,在撰写文件中,服务使用的 vieux/sshfs 驱动程序创建的卷很少。

服务生成的容器执行单个脚本,之后容器完成/退出并在其位置创建一个新容器 - 基本上服务一直在生成新容器。

一切顺利,除了主机中积累了异常大量的僵尸进程。当 docker 守护进程重新启动时,僵尸就消失了——一定是 docker 制造了僵尸。

"ps aux | grep 'Z'"

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      3040  0.0  0.0      0     0 ?        Zs   14:13   0:00 [ssh] <defunct>
root      3042  0.0  0.0      0     0 ?        Zs   14:13   0:00 [sshfs] <defunct>
root      3052  0.0  0.0      0     0 ?        Zs   14:13   0:00 [ssh] <defunct>
root      3055  0.0  0.0      0     0 ?        Zs   14:13   0:00 [sshfs] <defunct>
...

据我了解,卷只创建一次,服务只是使用卷的本地副本 - 不创建新的 ssh 连接并直接从远程机器读取 - 这不应该创建另一个 ssh 连接过程那将成为僵尸。

我很难找到有关该主题的信息,这让我认为我在做一些根本错误的事情。请帮忙。

4

2 回答 2

2

我刚刚通过为 docker-compose 文件中的服务启用 Tini 解决了这个问题,如下所示 -

init: true

很少有僵尸(<10)弹出,但它们会在一秒钟内被杀死 - 没有积累。

我仍然不明白僵尸与 ssh 有什么关系。如果有人能回答我将不胜感激。

PS:我在启用 Tini 几天后检查过。一些累积的僵尸(〜300,之前有〜2000)。问题似乎减轻了,但它仍然存在。

于 2019-06-04T11:15:16.137 回答
0

我最近读了一篇关于它的文章。它只是说,如果您将卷直接声明到 docker-compose.yml 中,可能会导致僵尸 sshfs 进程出现一些问题。

为避免这种情况,我尝试将卷声明为外部并手动运行 docker 卷的创建。

docker volume create -d vieux/sshfs -o sshcmd="$USER_SSH@$IP:/mysupervolume" -o IdentityFile="/root/.ssh/$SSH_KEY" nameofmyvolume

希望它会帮助某人。

氪,

于 2020-01-20T14:43:59.953 回答