我如何扩展一个图像,使其仍然有效? 什么时候Dockerfile中的图像可以在from行?
我有一个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中是否有一个图像可以被删除。
谢谢。
您已经正确“扩展”了c7-sshd映像。 问题在于httpd映像中的CMD
指令replace了c7-sshd映像中的CMD
指令,所以只有httpd正在启动,而不是sshd。 每个图像只能有一个单独的CMD
指令,在容器启动时运行。
你需要做的是改变CMD
指令,以便启动httpd和sshd。 使用Mark O'Connorbuild议的stream程pipe理器最好的方法是https://docs.docker.com/articles/using_supervisord/ 。
另外,在一个由ENTRYPOINT
指令而不是CMD
调用的脚本中执行此操作通常会更好,因此您可以使用CMD
在运行时向ENTRYPOINT
脚本提供参数。
最后,你真的需要sshd吗? 你可能会发现使用docker exec -it CONTAINER /bin/bash
是一个更好的解决scheme。