我有一个sshd Dockerfile。有用。我可以ssh到它。我调用了图片local/c7-sshd
。
from centos:7
...
expose 22
cmd ["/usr/sbin/sshd","-D"]
现在我想将此图像扩展为httpd图像。我有一个Dockerfile,
from local/c7-sshd
...
expose 80
cmd ["/usr/sbin/httpd","-D","FOREGROUND"]
当我从这张图片中启动一个容器时,httpd运行,但sshd没有。
所以我不知道Dockerfile中from
之后的图像是否可以。
感谢。
答案 0 :(得分:4)
您已正确“扩展”了c7-sshd图像。问题是httpd图像中的CMD
指令替换了c7-sshd图像中的CMD
指令,因此只启动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
是更好的解决方案。