我有一个 sshd Dockerfile。有用。我可以通过 ssh 连接到它。我把图像称为local/c7-sshd.
from centos:7
...
expose 22
cmd ["/usr/sbin/sshd","-D"]
Run Code Online (Sandbox Code Playgroud)
现在我想将此图像扩展为 httpd 图像。我有一个 Dockerfile,
from local/c7-sshd
...
expose 80
cmd ["/usr/sbin/httpd","-D","FOREGROUND"]
Run Code Online (Sandbox Code Playgroud)
当我从此映像启动容器时,httpd 运行,但 sshd 不运行。
所以我不知道什么时候可以from在 Dockerfile 中添加镜像。
谢谢。
您已正确“扩展”c7-sshd 映像。问题是CMDhttpd 映像中的指令替换了CMDc7-sshd 映像中的指令,因此仅启动了 httpd,而不启动了 sshd。每个镜像只能有一条CMD在容器启动时运行的指令。
您需要做的是更改CMD指令,以便它同时启动 httpd 和 sshd。按照 Mark O'Connor 的建议,最好的方法是使用进程管理器https://docs.docker.com/articles/using_supervisord/。
此外,通常最好在从指令调用的脚本中执行此操作,ENTRYPOINT而不是在 中CMD执行此操作,以便您可以CMD在运行时向ENTRYPOINT脚本提供参数。
最后,你真的需要 sshd 吗?您可能会发现使用docker exec -it CONTAINER /bin/bash是更好的解决方案。
| 归档时间: |
|
| 查看次数: |
1555 次 |
| 最近记录: |