Docker 容器始终重新启动

Docker container always restarting

提问人:Vana 提问时间:7/27/2017 最后编辑:Philipp ClaßenVana 更新时间:7/27/2017 访问量:5384

问:

我尝试使用 Docker 复合文件从 debian 映像启动 Docker 容器。 但是当我这样做时,容器总是重新启动。我不知道为什么:sdocker ps - a

这是我的dockerfile:

FROM debian:jessie
ENV DEBIAN_FRONTEND noninteractive
RUN mkdir /home/server
RUN cd /home/server
VOLUME /home/server
CMD /bin/bash

这是我的docker compose文件:

version: '2'
 services:
server:
 build: .
 restart: always
 container_name: server
 volumes:
   - "/home/binaries:/home/server"
docker dockerfile docker-container docker-image

评论

0赞 Grimmy 7/27/2017
除了使用重启策略时应该发生的情况之外,“容器始终重新启动”是什么意思?always

答:

3赞 Philipp Claßen 7/27/2017 #1

当 docker-compose 运行您的“服务器”容器时,它将立即终止。一个 docker 容器至少需要一个正在运行的进程,否则容器将退出。在您的示例中,您没有启动一个保持活动状态的进程。

正如您配置的那样,docker-compose 将无休止地为“服务器”重新启动新容器。这应该可以解释您描述的行为。restart: always

我见过docker-compose文件,其中定义了仅挂载图像的数据容器(与)。它们故意用作命令,这也会导致永久但无害的重新启动。例如:volumes_from/bin/true

data:
  restart: always
  image: postgres:latest
  volumes:
    - /var/lib/postgresql
  command: "true"

如果重新启动不是您想要的,则可以在容器中启动一个进程,该进程执行一些有用的操作,例如运行 Web 服务器或数据库。但是,仅靠 bash 并不能使容器保持活力。在非交互模式下运行的 bash 将立即退出。