docker – CoreOS:`fleetctl stop`总是以状态137退出

前端之家收集整理的这篇文章主要介绍了docker – CoreOS:`fleetctl stop`总是以状态137退出前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我一直在努力熟悉CoreOS(v.633.1.0),我一直在玩舰队(我在本地机器上使用推荐的Vagrant 3群集设置).我创建了以下非常基本的服务(apache @ .service):

  1. [Unit]
  2. Description="Dummy Apache service"
  3. After="docker.service"
  4. Requires="docker.service"
  5. [Service]
  6. TimeoutStartSec=0
  7. TimeoutStopSec=30
  8. ExecStartPre=-/usr/bin/docker kill apache1
  9. ExecStartPre=-/usr/bin/docker rm apache1
  10. ExecStartPre=/usr/bin/docker pull coreos/apache
  11. ExecStart=/usr/bin/docker run --rm --name apache1 -p 80:80 coreos/apache /usr/sbin/apache2ctl -D FOREGROUND
  12. ExecStop=/usr/bin/docker stop apache1
  13. [X-Fleet]
  14. Conflicts=apache@*.service

当我开始它时,它只是完美无缺地工作,但是,每当我试图阻止它时,它被标记为失败.这是例如的输出.当stop命令开始执行时,fleetctl status apache @ 2:

  1. core@core-01 ~ $fleetctl stop apache@2
  2. Unit apache@2.service loaded on a91e28b0.../172.17.8.101
  3. core@core-01 ~ $fleetctl status apache@2
  4. apache@2.service - "Dummy Apache container"
  5. Loaded: loaded (/run/fleet/units/apache@2.service; linked-runtime; vendor preset: disabled)
  6. Active: deactivating (stop) since Wed 2015-04-15 18:45:46 UTC; 2s ago
  7. Process: 1038 ExecStartPre=/usr/bin/docker pull coreos/apache (code=exited,status=0/SUCCESS)
  8. Process: 1030 ExecStartPre=/usr/bin/docker rm apache1 (code=exited,status=1/FAILURE)
  9. Process: 1024 ExecStartPre=/usr/bin/docker kill apache1 (code=exited,status=1/FAILURE)
  10. Main PID: 1375 (docker); : 1522 (docker)
  11. CGroup: /system.slice/system-apache.slice/apache@2.service
  12. ├─1375 /usr/bin/docker run --rm --name apache1 -p 80:80 coreos/apache /usr/sbin/apache2ctl -D FOREGROUND
  13. └─control
  14. └─1522 /usr/bin/docker stop apache1
  15. Apr 15 18:43:18 core-01 docker[1038]: 9cd978db300e: Pulling fs layer
  16. Apr 15 18:44:26 core-01 docker[1038]: 9cd978db300e: Download complete
  17. Apr 15 18:44:26 core-01 docker[1038]: 87026dcb0044: Pulling Metadata
  18. Apr 15 18:44:27 core-01 docker[1038]: 87026dcb0044: Pulling fs layer
  19. Apr 15 18:44:53 core-01 docker[1038]: 87026dcb0044: Download complete
  20. Apr 15 18:44:53 core-01 docker[1038]: 87026dcb0044: Download complete
  21. Apr 15 18:44:53 core-01 docker[1038]: Status: Downloaded newer image for coreos/apache:latest
  22. Apr 15 18:44:53 core-01 systemd[1]: Started "Dummy Apache container".
  23. Apr 15 18:44:53 core-01 docker[1375]: apache2: Could not reliably determine the server's fully qualified domain name,using 10.1.0.2 for ServerName
  24. Apr 15 18:45:46 core-01 systemd[1]: Stopping "Dummy Apache container"...

但是,几秒钟后:

  1. core@core-01 ~ $fleetctl status apache@2
  2. apache@2.service - "Dummy Apache container"
  3. Loaded: loaded (/run/fleet/units/apache@2.service; linked-runtime; vendor preset: disabled)
  4. Active: Failed (Result: exit-code) since Wed 2015-04-15 18:45:56 UTC; 1s ago
  5. Process: 1522 ExecStop=/usr/bin/docker stop apache1 (code=exited,status=0/SUCCESS)
  6. Process: 1375 ExecStart=/usr/bin/docker run --rm --name apache1 -p 80:80 coreos/apache /usr/sbin/apache2ctl -D FOREGROUND (code=exited,status=137)
  7. Process: 1038 ExecStartPre=/usr/bin/docker pull coreos/apache (code=exited,status=1/FAILURE)
  8. Main PID: 1375 (code=exited,status=137)
  9. Apr 15 18:44:53 core-01 docker[1038]: 87026dcb0044: Download complete
  10. Apr 15 18:44:53 core-01 docker[1038]: Status: Downloaded newer image for coreos/apache:latest
  11. Apr 15 18:44:53 core-01 systemd[1]: Started "Dummy Apache container".
  12. Apr 15 18:44:53 core-01 docker[1375]: apache2: Could not reliably determine the server's fully qualified domain name,using 10.1.0.2 for ServerName
  13. Apr 15 18:45:46 core-01 systemd[1]: Stopping "Dummy Apache container"...
  14. Apr 15 18:45:56 core-01 docker[1522]: apache1
  15. Apr 15 18:45:56 core-01 systemd[1]: apache@2.service: main process exited,code=exited,status=137/n/a
  16. Apr 15 18:45:56 core-01 systemd[1]: Stopped "Dummy Apache container".
  17. Apr 15 18:45:56 core-01 systemd[1]: Unit apache@2.service entered Failed state.
  18. Apr 15 18:45:56 core-01 systemd[1]: apache@2.service Failed.

从我所看到的,似乎docker正在杀死容器(这是ExecStartPre命令在服务启动时应该做的事情).我还用journalctl调查了日志,似乎就是这种情况.

更正:进一步检查(眼睛靠近屏幕),我注意到日志中这条非常重要的一行:

  1. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="Container afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1 Failed to exit within 10 seconds of SIGTERM -

所以我可以看到docker无法正常停止服务(我不理解的原因),但我仍然不明白为什么它会继续并试图销毁容器.以下是其他相关日志:

  1. Apr 15 18:45:46 core-01 systemd[1]: Stopping "Dummy Apache container"...
  2. Apr 15 18:45:46 core-01 fleetd[880]: INFO manager.go:145: Triggered systemd unit apache@2.service stop: job=2115
  3. Apr 15 18:45:46 core-01 fleetd[880]: INFO reconcile.go:311: AgentReconciler completed task: type=StopUnit job=apache@2.service reason="unit currently launched but desired state is loaded"
  4. Apr 15 18:45:46 core-01 dockerd[881]: time="2015-04-15T18:45:46Z" level="info" msg="POST /v1.17/containers/apache1/stop?t=10"
  5. Apr 15 18:45:46 core-01 dockerd[881]: time="2015-04-15T18:45:46Z" level="info" msg="+job stop(apache1)"
  6. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="Container afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1 Failed to exit within 10 seconds of SIGTERM -
  7. Apr 15 18:45:56 core-01 kernel: docker0: port 1(veth87a841f) entered disabled state
  8. Apr 15 18:45:56 core-01 kernel: device veth87a841f left promiscuous mode
  9. Apr 15 18:45:56 core-01 kernel: docker0: port 1(veth87a841f) entered disabled state
  10. Apr 15 18:45:56 core-01 systemd-networkd[830]: veth87a841f : lost carrier
  11. Apr 15 18:45:56 core-01 systemd-networkd[830]: veth87a841f : could not find udev device: No such device
  12. Apr 15 18:45:56 core-01 systemd-networkd[830]: docker0 : lost carrier
  13. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="+job log(die,afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1,coreos/apache:latest)"
  14. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="-job log(die,coreos/apache:latest) = OK (0)"
  15. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="+job release_interface(afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1)"
  16. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="-job attach(afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1) = OK (0)"
  17. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="POST /v1.17/containers/afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1/wait"
  18. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="+job wait(afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1)"
  19. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="-job release_interface(afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1) = OK (0)"
  20. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="+job log(stop,coreos/apache:latest)"
  21. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="-job log(stop,coreos/apache:latest) = OK (0)"
  22. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="-job stop(apache1) = OK (0)"
  23. Apr 15 18:45:56 core-01 docker[1522]: apache1
  24. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="-job wait(afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1) = OK (0)"
  25. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="GET /v1.17/containers/afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1/json"
  26. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="+job container_inspect(afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1)"
  27. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="-job container_inspect(afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1) = OK (0)"
  28. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="DELETE /v1.17/containers/afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1?v=1"
  29. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="+job rm(afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1)"
  30. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="POST /v1.17/containers/afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1/kill?signal=TERM"
  31. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="+job kill(afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1,TERM)"
  32. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="+job log(destroy,coreos/apache:latest)"
  33. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="-job log(destroy,coreos/apache:latest) = OK (0)"
  34. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="-job rm(afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1) = OK (0)"
  35. Apr 15 18:45:56 core-01 systemd[1]: apache@2.service: main process exited,status=137/n/a
  36. Apr 15 18:45:56 core-01 systemd[1]: Stopped "Dummy Apache container".
  37. Apr 15 18:45:56 core-01 systemd[1]: Unit apache@2.service entered Failed state.
  38. Apr 15 18:45:56 core-01 systemd[1]: apache@2.service Failed.
  39. Apr 15 18:45:56 core-01 dockerd[881]: No such container: afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1
  40. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="info" msg="-job kill(afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1,TERM) = ERR (1)"
  41. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="error" msg="Handler for POST /containers/{name:.*}/kill returned error: No such container: afa4e52d8ff2edaa53d2bae1177535d669a4758f
  42. Apr 15 18:45:56 core-01 dockerd[881]: time="2015-04-15T18:45:56Z" level="error" msg="HTTP Error: statusCode=404 No such container: afa4e52d8ff2edaa53d2bae1177535d669a4758f1cc524056ba55a9da383ffd1"

我不确定这里发生了什么,所以非常感谢任何帮助.

更新:仅仅为了测试,我增加了服务文件中的超时(docker stop -t 300 apache1和TimeoutStopSec = 300),但是即使等待5分钟后容器也无法停止.为了确保我试图直接在命令行停止容器(docker stop apache1),当然它工作得很好.所以似乎有一些东西阻止容器通过fleetctl正确停止.

谢谢你的时间!

最佳答案
docker停止容器的原因是因为容器中的apache失败了.

猜你在找的Docker相关文章