Docker“在docker-compose up”期间“优雅地停止”自己,而不是`docker-compose run –entrypoint`

当我用docker构buildDocker容器docker-compose up ,它像往常一样启动,但是最终容器会自动退出,而我没有任何可以告诉的容量在详细日志中是有用的。

当我运行相同docker-compose.ymlconfiguration(具有相同的入口点设置)和相同的Dockerfile运行docker-compose up --entrypoint run-tests.sh时,Docker容器自己单独“优雅地停止”并停止所有的容器。

不好的行为似乎来自运行docker-compose up而不是相当的docker-compose run

容器在closures之前似乎保持不同的时间。 有一次,它停留了7分钟,其他时间不同。

有谁知道如何解决这个问题?

docker版本:

 Docker version 1.9.0, build 76d6bc9 docker-compose version: 1.5.0 docker-machine version 0.5.0 (HEAD) 

docker-compose --verbose up log:

 docker-compose --verbose --project-name monkeycore up monkeycore-autotest ... lots of startup log (let me know if you need to see this) ... # Scala Play1 Framework tests, not likely relevant monkeycore-autotest_1 | ~ MonkeyTest... PASSED 30s monkeycore-autotest_1 | ~ WhateverDataTest... PASSED 33s monkeycore-autotest_1 | ~ SauceTest... PASSED 1 min 44s Gracefully stopping... (press Ctrl+C again to force) compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=False, filters={u'label': [u'com.docker.compose.project=monkeycore', u'com.docker.compose.oneoff=False']}) compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 2 items) compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- (u'617bf28c3f7ae3779f383f7e2a96f66e552e92f755a15d07ac6b73329ba3860f') compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {u'AppArmorProfile': u'', u'Args': [u'-c', u'build.sh && play auto-test'], u'Config': {u'AttachStderr': False, u'AttachStdin': False, u'AttachStdout': False, u'Cmd': None, u'CpuShares': 0, u'Cpuset': u'', u'Domainname': u'', u'Entrypoint': [u'bash', u'-c', u'build.sh && play auto-test'], ... compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- (u'4963e9287ed10d587a79f57a52eaf86c07c6947b2119072bd5d68a3ed0eb161e') compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {u'AppArmorProfile': u'', u'Args': [u'/usr/local/etc/redis/redis.conf'], u'Config': {u'AttachStderr': False, u'AttachStdin': False, u'AttachStdout': False, u'Cmd': None, u'CpuShares': 0, u'Cpuset': u'', u'Domainname': u'', u'Entrypoint': [u'redis-server', ... Stopping monkeycore_monkeycore-autotest_1 ... compose.cli.verbose_proxy.proxy_callable: docker stop <- (u'617bf28c3f7ae3779f383f7e2a96f66e552e92f755a15d07ac6b73329ba3860f', timeout=10) Stopping monkeycore_monkeycore-autotest_1 ... done ERROR: compose.cli.main.main: Couldn't connect to Docker daemon - you might need to run `docker-machine start default`. 

docker-compose.yml

 monkeycore-base: build: ../ dockerfile: "docker/monkeycore/Dockerfile" ports: - "8000:8000" - "8082:8082" - "9000:9000" stdin_open: true tty: true working_dir: "/path/to/dir" volumes: - src:dest environment: LOTS_OF_ENVIRONMENT_VARIABLES: "defined" monkeycore-autotest: extends: service: monkeycore-base links: - redis entrypoint: "run-tests.sh" redis: build: ./redis ports: - "6379:6379" 

我遇到了同样的问题。 在Compose的仓库中有一个开放的问题 。

在有人build议的问题中,作为解决方法,运行docker-compose up -d 。 这样,即使连接失败,容器也会继续运行。 要查看容器日志,只需运行docker-compose logs

这个build议现在解决了这个问题,而不必担心降级Compose。

出于某种原因,您的docker客户端与您的docker引擎失去了沟通。 monkeycore_monkeycore-autotest_1容器上的某个问题可能导致了这个问题。

检查您的docker机是否仍在运行:

 $ docker machine ls 

如果你的envsvariables被设置了,“docker”

 env | grep -i "docker" 

尝试重新启动你的docker机器,重置你的环境variables

 eval "$(docker-machine env default)" ### or your machine name. 

并尝试在容器( docker exec -ti container-name /bin/bash )中手动运行testing以查看哪里出了问题。