2015-11-19 22 views
6

Khi tôi khởi động vùng chứa Docker với docker-compose up, nó khởi động như bình thường, nhưng cuối cùng container tự động thoát mà không cần bất cứ thứ gì mà tôi có thể nói là hữu ích trong nhật ký tiết.Docker "Gracefully stop" trong quá trình `docker-compose up` nhưng không phải` docker-compose run --entrypoint`

Khi tôi thay vì chạy docker-compose up --entrypoint run-tests.sh với cùng cấu hình docker-compose.yml (với cùng một bộ điểm nhập) và cùng một Dockerfile, vùng chứa Docker nói "Tự mình dừng" một cách duyên dáng và dừng tất cả các vùng chứa.

Hành vi xấu dường như đến từ việc chạy docker-compose up thay vì tương đương docker-compose run.

Vùng chứa dường như ở lại các thời điểm khác nhau trước khi tắt. Trong một trường hợp nó ở lại trong 7 phút, thời gian khác nhau ở những người khác.

Có ai biết cách khắc phục sự cố này không?

phiên bản Docker:

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

Các 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" 

Trả lời

5

Tôi đã gặp sự cố tương tự. Có một open issue cho điều đó tại kho của Compose.

Trong vấn đề mà một người nào đó đề xuất, như một giải pháp thay thế, để chạy docker-compose up -d. Bằng cách đó, các thùng chứa sẽ tiếp tục chạy ngay cả khi có lỗi kết nối. Để xem nhật ký vùng chứa chỉ chạy docker-compose logs.

Đề xuất đó đã giải quyết được vấn đề ngay bây giờ mà không phải lo lắng hạ cấp Soạn thư.

+0

Bạn có thể liên kết đến vấn đề trên GitHub không? – Neil

+0

@Neil Chỉ cần làm. – nbap

3

Đối với một số lý do khách hàng Docker của bạn bị mất comunication với bạn Docker động cơ. Có thể là một số sự cố trong số các container monkeycore_monkeycore-autotest_1 đã gây ra vấn đề này.

Kiểm tra xem máy Docker của bạn vẫn chạy:

$ docker machine ls 

và nếu envs bạn biến được thiết lập, các 'Docker' người:

env | grep -i "docker" 

Cố gắng khởi động lại Docker-máy tính của bạn, thiết lập lại env vars của bạn

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

và cố gắng chạy thử nghiệm theo cách thủ công bên trong hộp chứa ()) để xem những gì đang xảy ra ở đó.

+0

Tôi đã cập nhật câu hỏi. Tôi đã phát hiện ra rằng hành vi xấu xảy ra khi chạy 'docker-compose up', nơi nó không xảy ra khi chạy' docker-compose run --entrypoint' trong đó cùng một điểm nhập được thiết lập. – Neil

+0

Máy docker của tôi đang chạy và tôi có thể ssh với nó. Tôi cũng có thể thực hiện thành công 'docker-compose run' và vượt qua các kiểm tra đó, giữa các thất bại của' docker-compose up' có cùng điểm vào.Vấn đề dường như chỉ với 'docker-compose up'. – Neil

+0

Tôi không biết về vấn đề về docker-compose đó. Tôi luôn khởi động docker-compose bằng cờ '-d'. – wsilva

Các vấn đề liên quan