我尝试使用 Docker 撰写文件从 debian 镜像启动 Docker 容器。 但是当我执行 docker ps - a 时,容器总是会重新启动。我不知道为什么:s
这是我的 dockerfile:
FROM debian:jessie
ENV DEBIAN_FRONTEND noninteractive
RUN mkdir /home/server
RUN cd /home/server
VOLUME /home/server
CMD /bin/bash
这是我的 docker 撰写文件:
version: '2'
services:
server:
build: .
restart: always
container_name: server
volumes:
- "/home/binaries:/home/server"
最佳答案
当 docker-compose 运行你的“服务器”容器时,它将立即终止。一个docker容器至少需要有一个正在运行的进程,否则容器将会退出。在您的示例中,您没有启动一个保持事件状态的进程。
当您配置了restart:always
时,docker-compose将不断地为“服务器”重新启动新容器。这应该可以解释您所描述的行为。
我见过 docker-compose 文件,其中定义了仅安装图像的数据容器(与 volumes_from
结合使用)。他们故意使用 /bin/true
作为命令,这也会导致永久但无害的重新启动。例如:
data:
restart: always
image: postgres:latest
volumes:
- /var/lib/postgresql
command: "true"
如果重新启动不是您想要的,您可以在容器中启动一个进程来执行一些有用的操作,例如运行 Web 服务器或数据库。但仅靠 bash 并不能让容器保持活力。以非交互模式运行的 bash 将立即退出。
关于Docker容器总是重启,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45334111/