我正在准备一个通过Dockerfile在前台运行apache的docker容器:
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
我构建它,运行它,当我启动它时,我在前台有apache并可以通过
控制它docker exec mycontainer dosomething
但是,如果我以某种方式弄乱它,例如通过放置一个损坏的apache配置或ssl证书,并且apache因错误而不再启动。这意味着整个容器将不再启动,我无法使用docker exec
来修复它。
所以我正在寻找的是让apache在前台运行的方法,只要一切都很好就使用docker exec
,但是如果apache有启动问题,我想把容器启动到bin / bash中apache前台模式。
有没有办法实现这一目标?我怎样才能确保我不会因为apache启动问题而被锁定在容器外?谢谢!
答案 0 :(得分:1)
但是如果apache有启动问题,我想把容器启动到bin / bash而不是apache前台模式
是的,any parameter passed to docker run
would override the CMD
ones:
docker run -it <yourApacheImage> bash
$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
此命令是可选的,因为创建
IMAGE
的人可能已使用DockerfileCOMMAND
指令提供了默认CMD
。 作为操作员(从图像运行容器的人),您只需指定新的CMD
即可覆盖COMMAND
指令。如果由于Apache启动问题,我如何确保不会被锁定在容器外?
你完全可以:它无法启动,它将在&#34;退出&#34;模式,您将不得不删除该容器 然后你用一个bash会话开始一个新的,并在那个bash中,尝试再次启动Apache:当它再次失败时,你在容器中,可以查看日志。