Docker-compose restart:除非停止-奇怪的行为

时间:2019-04-05 09:37:14

标签: docker docker-compose

> docker ps
CONTAINER ID        IMAGE                                               COMMAND                  CREATED             STATUS                          PORTS                    NAMES
210ebea2ef5f        localhost.localdomain/foo                           "node app.js -C conf…"   12 minutes ago      Restarting (1) 9 minutes ago                             foo

> docker stop 210ebea2ef5f
210ebea2ef5f

> docker ps
CONTAINER ID        IMAGE                                               COMMAND                  CREATED             STATUS                          PORTS                    NAMES
210ebea2ef5f        localhost.localdomain/foo                           "node app.js -C conf…"   12 minutes ago      Restarting (1) 9 minutes ago                             foo

嗯?

> docker kill 210ebea2ef5f
Error response from daemon: Cannot kill container: 210ebea2ef5f: Container 210ebea2ef5f6f25265a3da88954fe111fabba99602ef628e0ee88630e26fd5d is not running

> docker ps
CONTAINER ID        IMAGE                                               COMMAND                  CREATED             STATUS                          PORTS                    NAMES
210ebea2ef5f        localhost.localdomain/foo                           "node app.js -C conf…"   12 minutes ago      Restarting (1) 9 minutes ago                             foo

有人对这里发生的事情有所启发吗?在容器上启用重启策略后,我就开始注意到这一点。它正在Windows(18.09.3)的docker中运行。使用docker compose设置重启策略,如下所示:

version: '3'
services:
  foo:
    build: .
    image: localhost.localdomain/${repository_name}
    container_name: ${container_name}
    restart: unless-stopped:0

重启策略是否只是在Windows的Docker中出现故障?

顺便说一句。 docker rm 210ebea2ef5f did 最终从我的docker ps列表中删除了该容器,但这不是我期望的行为。

2 个答案:

答案 0 :(得分:0)

您的重新启动策略完全按照您的要求执行。

如果您查看<div> <li> <svg width="100" height="100"> <rect width="100" height="100"/> </svg> <a>Link element</a> </li> </div> 输出中的STATUS列,则会看到:

docker ps

这通常意味着容器未成功运行:先启动,然后立即退出,然后由Docker立即重新启动。这意味着在运行Restarting (1) 9 minutes ago 时,容器实际上没有运行。

您可以运行docker kill来停止容器并阻止其重新启动。

您需要检查您的日志和docker stop <id>,以确定首先要退出容器的原因。

答案 1 :(得分:0)

这看起来像是being fixed in 18.09.5docker ps的错误。如果您使用以下方法检查容器:

docker inspect 210ebea2ef5f --format '{{ json .State }}'

状态应显示为已退出。

我怀疑您看到docker ps出现此错误的原因是因为状态显示在9分钟前,在几秒钟内发生了正常的崩溃循环。您可以尝试rc1 for 18.09.5 that was just pushed(这要求您从测试版本中提取更新),或等待最终的18.09.5发行并对其进行更新。看来这只是ps输出的问题,对容器本身的行为没有影响。