准备Docker容器以通过shell或exec进行最坏情况的救援

时间:2015-11-15 10:17:34

标签: apache docker

我正在准备一个通过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启动问题而被锁定在容器外?谢谢!

1 个答案:

答案 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的人可能已使用Dockerfile COMMAND指令提供了默认CMD。   作为操作员(从图像运行容器的人),您只需指定新的CMD即可覆盖COMMAND指令。

     

如果由于Apache启动问题,我如何确保不会被锁定在容器外?

你完全可以:它无法启动,它将在&#34;退出&#34;模式,您将不得不删除该容器 然后你用一个bash会话开始一个新的,并在那个bash中,尝试再次启动Apache:当它再次失败时,你在容器中,可以查看日志。