如何扩展图像,使其仍然有效?在Dockerfile中,图像何时可以位于from行中?
我有一个sshd Dockerfile。它起作用了。我可以用ssh连接到它。我调用了image如何扩展图像,使其仍然有效?在Dockerfile中,图像何时可以位于from行中?,docker,Docker,我有一个sshd Dockerfile。它起作用了。我可以用ssh连接到它。我调用了imagelocal/c7sshd 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运行
local/c7sshd
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
之后
谢谢。您已正确“扩展”了c7 SSD映像。问题是httpd映像中的CMD
指令替换了c7 sshd映像中的CMD
指令,因此只启动httpd,而不是sshd。每个映像只能有一条CMD
指令,该指令在容器启动时运行
您需要做的是更改CMD
指令,以便它同时启动httpd和sshd。按照MarkO'Connor的建议,最好的方法是使用流程管理器
另外,通常最好在从ENTRYPOINT
指令调用的脚本中执行此操作,而不是在CMD
指令中执行此操作,这样您就可以使用CMD
在运行时为ENTRYPOINT
脚本提供参数
最后,你真的需要sshd吗?您可能会发现使用
docker exec-it CONTAINER/bin/bash
是一个更好的解决方案。supervisord类似于systemd,但这不是我的意思。我想知道如何扩展图像。