ssh 自动启动的 dockerfile ssh 僵尸进程
dockerfile ssh zombie process for ssh autostart
您好,我在使用容器自动启动 sshd 时遇到了一些大问题。
我的码头文件:
Dockerfile
我的入口点:
entrypoint
当我进入容器 bash 并输入:
service ssh status
[FAIL] sshd is not running ... failed!
我也得到僵尸 ssh 进程:-|
ps -ef | grep ssh
node 15 1 0 14:49 ? 00:00:00 [sshd] defunct
node 183 142 0 14:59 pts/0 00:00:00 grep ssh
我是不是在 dockerfile 中犯了一些错误??
将此添加到您的入口点脚本中。
service ssh restart && bash
更多信息here。
希望对您有所帮助。
这是因为你在Dockerfile末尾使用USER node
来启动sshd,我猜你想用node user
来启动npm
。
但是,建议的方法是使用 root
启动 sshd & 使用 node
启动 npm
,你可以看到一个著名的项目 redis
也使用相同的解决方案here
然后,您需要进行下一步修复:
- 删除
CMD
之前Dockerfile末尾的USER node
。
在你的dockerfile
中删除RUN chmod 0444 /etc/ssh/*
否则接下来会报which make sshd not work:
Permissions 0444 for '/etc/ssh/ssh_host_ecdsa_key' are too open.
删除RUN echo 'PermitRootLogin=without-password' >> /etc/ssh/sshd_config
,用next替换:
RUN echo 'PermitRootLogin=yes' >> /etc/ssh/sshd_config
在Dockerfile中添加RUN apt-get install -y gosu
安装gosu,稍后在entrypoint.sh
中使用
在entrypoint.sh
中,将exec "$@"
改为下一个:
exec gosu node "$@"
这将确保 npm start
仍然 运行 与用户节点。
然后,你可以看到什么时候启动容器,sshd 工作,如果需要你可以使用 service ssh stop && service ssh start
重新启动服务,但是作为容器 运行 sshd 现在好了,我猜您无需再次使用它。
您好,我在使用容器自动启动 sshd 时遇到了一些大问题。
我的码头文件: Dockerfile
我的入口点: entrypoint
当我进入容器 bash 并输入:
service ssh status
[FAIL] sshd is not running ... failed!
我也得到僵尸 ssh 进程:-|
ps -ef | grep ssh
node 15 1 0 14:49 ? 00:00:00 [sshd] defunct
node 183 142 0 14:59 pts/0 00:00:00 grep ssh
我是不是在 dockerfile 中犯了一些错误??
将此添加到您的入口点脚本中。
service ssh restart && bash
更多信息here。
希望对您有所帮助。
这是因为你在Dockerfile末尾使用USER node
来启动sshd,我猜你想用node user
来启动npm
。
但是,建议的方法是使用 root
启动 sshd & 使用 node
启动 npm
,你可以看到一个著名的项目 redis
也使用相同的解决方案here
然后,您需要进行下一步修复:
- 删除
CMD
之前Dockerfile末尾的USER node
。 在你的dockerfile
中删除RUN chmod 0444 /etc/ssh/*
否则接下来会报which make sshd not work:
Permissions 0444 for '/etc/ssh/ssh_host_ecdsa_key' are too open.
删除
RUN echo 'PermitRootLogin=without-password' >> /etc/ssh/sshd_config
,用next替换:RUN echo 'PermitRootLogin=yes' >> /etc/ssh/sshd_config
在Dockerfile中添加
RUN apt-get install -y gosu
安装gosu,稍后在entrypoint.sh
中使用
在
entrypoint.sh
中,将exec "$@"
改为下一个:exec gosu node "$@"
这将确保
npm start
仍然 运行 与用户节点。
然后,你可以看到什么时候启动容器,sshd 工作,如果需要你可以使用 service ssh stop && service ssh start
重新启动服务,但是作为容器 运行 sshd 现在好了,我猜您无需再次使用它。