docker – 我的coreos / fleet部署的服务正在消亡,我不知道为什么

前端之家收集整理的这篇文章主要介绍了docker – 我的coreos / fleet部署的服务正在消亡,我不知道为什么前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试在EC2中使用一个品牌闪亮的新coreos集群上使用fleet部署nsqlookupd.这是我的systemd单元文件

  1. [Unit]
  2. Description=nsqlookupd service
  3. After=docker.service
  4. Requires=docker.service
  5. [Service]
  6. EnvironmentFile=/etc/environment
  7. ExecStartPre=-/usr/bin/docker kill nsqlookupd
  8. ExecStartPre=-/usr/bin/docker rm nsqlookupd
  9. ExecStart=/usr/bin/docker run -d --name=nsqlookupd -e BROADCAST_ADDRESS=$COREOS_PUBLIC_IPV4 -p 4160:4160 -p 4161:4161 mikedewar/nsqlookupd
  10. ExecStartPost=/usr/bin/etcdctl set /nsqlookupd_broadcast_address $COREOS_PUBLIC_IPV4
  11. ExecStop=/usr/bin/docker stop -t 1 nsqlookupd
  12. ExecStopPost=/usr/bin/etcdctl rm /nsqlookupd_broadcast_address

如果我只运行ExecStart命令,我已经验证了容器正常工作.我的码头日志看起来像

  1. ~ $docker logs nsqlookupd
  2. 2014/08/08 02:23:58 nsqlookupd v0.2.29-alpha (built w/go1.2.2)
  3. 2014/08/08 02:23:58 TCP: listening on [::]:4160
  4. 2014/08/08 02:23:58 HTTP: listening on [::]:4161

我的fleetctl期刊看起来像

  1. $fleetctl journal nsqlookupd.service
  2. -- Logs begin at Sun 2014-08-03 12:49:00 UTC,end at Fri 2014-08-08 02:30:06 UTC. --
  3. Aug 08 02:23:57 ip-10-147-9-249 systemd[1]: Starting nsqlookupd service...
  4. Aug 08 02:23:57 ip-10-147-9-249 docker[6140]: Error response from daemon: No such container: nsqlookupd
  5. Aug 08 02:23:57 ip-10-147-9-249 docker[6140]: 2014/08/08 02:23:57 Error: Failed to kill one or more containers
  6. Aug 08 02:23:57 ip-10-147-9-249 docker[6148]: Error response from daemon: No such container: nsqlookupd
  7. Aug 08 02:23:57 ip-10-147-9-249 docker[6148]: 2014/08/08 02:23:57 Error: Failed to remove one or more containers
  8. Aug 08 02:23:57 ip-10-147-9-249 etcdctl[6157]: 54.198.93.169
  9. Aug 08 02:23:57 ip-10-147-9-249 systemd[1]: Started nsqlookupd service.
  10. Aug 08 02:23:57 ip-10-147-9-249 docker[6155]: 0fce4465f61c092541ba9d4c4e89ce13c4d6bedc096519034ed585d7adb5e0d7
  11. Aug 08 02:23:59 ip-10-147-9-249 docker[6194]: nsqlookupd

两者看起来都很好.但是容器安静地死了,我的fleetctl list-units给出了

  1. $fleetctl list-units
  2. UNIT STATE LOAD ACTIVE SUB DESC MACHINE
  3. nsqlookupd.service launched loaded deactivating stop nsqlookupd service 1320802c.../10.147.9.249

运行码头图像有点令人担忧:

  1. $docker images
  2. REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  3. sqlookupd latest 2219c0e783d9 3 weeks ago 710 MB
  4. Box latest a9eb17255234 9 weeks ago 2.433 MB
  5. zmarcantel/cassandra latest b1168b45b4f8 4 months ago 738 MB

因为我在过去3周内经常更新mikedewar / nsqlookupd.也许那是我第一次把东西推到码头中心的时候?我很想知道我正在使用的图像是最新的图像.我已经尝试过docker rmi mikedewar / nsqlookupd,然后是docker pull mikedewar / nsqlookupd,但CREATED列仍然说它是在3周前创建的.

我不知道这是否有用,但ExecStopPost = /usr/bin/etcdctl rm / nsqlookupd_broadcast_address命令似乎有效 – 舰队日志中的etcdctl日志表明我设法将密钥设置为我的IP,但之后容器死了我无法从etcd获得该密钥.

任何关于在哪里寻找线索的帮助,或任何想法为什么会发生这种情况将不胜感激!很明显,我对这类事情很陌生……

最佳答案
您不应该在单元文件中以分离模式运行docker容器.你的execstart包含它:ExecStart = /usr/bin/docker run -d.这将导致systemd认为该进程立即退出,因为它已分叉到后台.

至于管理版本,如果你想绝对确定你得到最新的副本,你应该标记你的容器然后拉mikedewar / nsqlookupd:1.2.3.您可以在每个车队单元文件增加此值.

猜你在找的Docker相关文章