我是Docker / Docker Swarm的新手,我想在Swarm上创建自定义mosquitto服务。我创建了一个自定义的蚊子图像
来自ubuntu:latest的lcsf/mosquitto3,然后我添加了一些工具(ping,ipconfig)。我可以使用docker run/bin/bash运行单个容器,但无法使用该图像创建Swarm服务。服务创建失败。以下是一些输出。

Dockerfile:
FROM ubuntu:latestRUN apt-get -y updateRUN apt-get install -y mosquitto mosquitto-clientsEXPOSE 80 443 1883 8083 8883
Docker服务创建输出:
overall progress: 0 out of 1 tasks1/1: preparing [========> ]verify: Detected task failure
该输出以循环形式显示,然后我使用ctrl + c停止它,使用0/1副本创建了服务,但未运行。

Docker服务ps mqtt(我的自定义名称)输出,有3个节点。
ID NAME IMAGE NODE
DESIRED STATE CURRENT STATE ERROR PORTSllqr0gysz4bj mqtt.1 lcsf/mosquitto3:latest Docker02 Ready Ready 2 seconds agokcwfqovyn2mp \_ mqtt.1 lcsf/mosquitto3:latest Docker03 Shutdown Complete 2 seconds agoruisy599nbt4 \_ mqtt.1 lcsf/mosquitto3:latest Docker03 Shutdown Complete 7 seconds agoxg1lib5x8vt9 \_ mqtt.1 lcsf/mosquitto3:latest Docker02 Shutdown Complete 13 seconds agofgm9wu25t0lj \_ mqtt.1 lcsf/mosquitto3:latest Docker03 Shutdown Complete 18 seconds ago

就是这样,我希望有人能帮助我。在此先感谢您,对不起我的英语和堆栈溢出技能。

更新#1

绑定(bind)创建服务后,从journalctl -f -n10命令输出:
Sep 25 09:01:03 Docker01 dockerd[1230]: time="2017-09-25T09:01:03.692391553-04:00" level=info msg="Node join event for Docker02-a9b6d39043d3/192.168.222.51"Sep 25 09:01:15 Docker01 systemd-udevd[31966]: Could not generate persistent MAC address for veth8e5ebcb: No such file or directorySep 25 09:01:15 Docker01 systemd-udevd[31967]: Could not generate persistent MAC address for vethaf2978b: No such file or directorySep 25 09:01:15 Docker01 kernel: docker0: port 1(vethaf2978b) entered blocking stateSep 25 09:01:15 Docker01 kernel: docker0: port 1(vethaf2978b) entered disabled stateSep 25 09:01:15 Docker01 kernel: device vethaf2978b entered promiscuous modeSep 25 09:01:15 Docker01 kernel: IPv6: ADDRCONF(NETDEV_UP): vethaf2978b: link is not readySep 25 09:01:15 Docker01 kernel: eth0: renamed from veth8e5ebcbSep 25 09:01:15 Docker01 kernel: IPv6: ADDRCONF(NETDEV_CHANGE): vethaf2978b: link becomes readySep 25 09:01:15 Docker01 kernel: docker0: port 1(vethaf2978b) entered blocking stateSep 25 09:01:15 Docker01 kernel: docker0: port 1(vethaf2978b) entered forwarding stateSep 25 09:01:15 Docker01 kernel: docker0: port 1(vethaf2978b) entered disabled stateSep 25 09:01:15 Docker01 kernel: veth8e5ebcb: renamed from eth0Sep 25 09:01:15 Docker01 kernel: docker0: port 1(vethaf2978b) entered disabled stateSep 25 09:01:15 Docker01 kernel: device vethaf2978b left promiscuous modeSep 25 09:01:15 Docker01 kernel: docker0: port 1(vethaf2978b) entered disabled stateSep 25 09:01:33 Docker01 dockerd[1230]: time="2017-09-25T09:01:33.693508463-04:00" level=info msg="Node join event for Docker03-f71a448c54c7/192.168.222.52"Sep 25 09:01:46 Docker01 dockerd[1230]: time="2017-09-25T09:01:46.541311475-04:00" level=info msg="Node join event for Docker02-a9b6d39043d3/192.168.222.51"Sep 25 09:01:57 Docker01 dockerd[1230]: sync duration of 3.001217113s, expected less than 1sSep 25 09:02:03 Docker01 dockerd[1230]: time="2017-09-25T09:02:03.694876667-04:00" level=info msg="Node join event for Docker03-f71a448c54c7/192.168.222.52"Sep 25 09:02:33 Docker01 dockerd[1230]: time="2017-09-25T09:02:33.695993259-04:00" level=info msg="Node join event for Docker03-f71a448c54c7/192.168.222.52"
更新#2

这是docker service ps --no-trunc mqtt命令的输出
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTSbour693j8jbbrt799fz0nkpwr mqtt.1 lcsf/mosquitto3:latest@sha256:beca44e5f916d08730dd19d9d10dd2dcbd3502866f69316806a63bc094a179a9 Docker03 Ready Ready 4 seconds agowro6254cs94gkijs8s4v9cvim \_ mqtt.1 lcsf/mosquitto3:latest@sha256:beca44e5f916d08730dd19d9d10dd2dcbd3502866f69316806a63bc094a179a9 Docker03 Shutdown Complete 4 seconds ago7vgx2mehaxki2p680fesn5jww \_ mqtt.1 lcsf/mosquitto3:latest@sha256:beca44e5f916d08730dd19d9d10dd2dcbd3502866f69316806a63bc094a179a9 Docker03 Shutdown Complete 10 seconds ago52hv6da6mj72s64po3hze4ham \_ mqtt.1 lcsf/mosquitto3:latest@sha256:beca44e5f916d08730dd19d9d10dd2dcbd3502866f69316806a63bc094a179a9 Docker03 Shutdown Complete 15 seconds agoe3s383vtg0idw8ryxwh2y3gmu \_ mqtt.1 lcsf/mosquitto3:latest@sha256:beca44e5f916d08730dd19d9d10dd2dcbd3502866f69316806a63bc094a179a9 Docker03 Shutdown Complete 21 seconds ago90i30f3riwka8xs187xi7uxt2 mqtt.2 lcsf/mosquitto3:latest@sha256:beca44e5f916d08730dd19d9d10dd2dcbd3502866f69316806a63bc094a179a9 Docker02 Ready Ready less than a second agop2lzd04tinjdjkwkr26umlh9a \_ mqtt.2 lcsf/mosquitto3:latest@sha256:beca44e5f916d08730dd19d9d10dd2dcbd3502866f69316806a63bc094a179a9 Docker02 Shutdown Complete less than a second agoq8awoj8uu7gad6hvonhl4t9f1 \_ mqtt.2 lcsf/mosquitto3:latest@sha256:beca44e5f916d08730dd19d9d10dd2dcbd3502866f69316806a63bc094a179a9 Docker02 Shutdown Complete 6 seconds ago1fuqt0et7vw1vntd8p62jiiut \_ mqtt.2 lcsf/mosquitto3:latest@sha256:beca44e5f916d08730dd19d9d10dd2dcbd3502866f69316806a63bc094a179a9 Docker02 Shutdown Complete 11 seconds agok3vlusok792zw0v3yddxqlmg3 \_ mqtt.2 lcsf/mosquitto3:latest@sha256:beca44e5f916d08730dd19d9d10dd2dcbd3502866f69316806a63bc094a179a9 Docker02 Shutdown Complete 17 seconds agoi4tywshqv4pxsyz5tz0z0evkz mqtt.3 lcsf/mosquitto3:latest@sha256:beca44e5f916d08730dd19d9d10dd2dcbd3502866f69316806a63bc094a179a9 Docker01 Ready Ready less than a second ago44ee4iqqpkeome4lokx9ykmbo \_ mqtt.3 lcsf/mosquitto3:latest@sha256:beca44e5f916d08730dd19d9d10dd2dcbd3502866f69316806a63bc094a179a9 Docker01 Shutdown Complete less than a second agokdx273e9fkpqkafztif1dz35q \_ mqtt.3 lcsf/mosquitto3:latest@sha256:beca44e5f916d08730dd19d9d10dd2dcbd3502866f69316806a63bc094a179a9 Docker01 Shutdown Complete 6 seconds agol2oewfnwbkia94r6rifbcfi4h \_ mqtt.3 lcsf/mosquitto3:latest@sha256:beca44e5f916d08730dd19d9d10dd2dcbd3502866f69316806a63bc094a179a9 Docker01 Shutdown Complete 11 seconds agodyekgkd0swsualssw4dtvk681 \_ mqtt.3 lcsf/mosquitto3:latest@sha256:beca44e5f916d08730dd19d9d10dd2dcbd3502866f69316806a63bc094a179a9 Docker01 Shutdown Complete 17 seconds ago

最佳答案

您的问题是您的dockerfile。您正在群集服务上运行bash命令。您需要运行一个不存在的命令

FROM ubuntu:latest
RUN apt-get -y update
RUN apt-get install -y mosquitto mosquitto-clients
EXPOSE 80 443 1883 8083 8883
CMD ["tail", "-f", "/dev/null"]

这是一个无限的tail命令,它将确保您的容器不会退出。在部署到群时,在镜像中运行不查找用户输入的命令。

关于bash - 我无法使用基于ubuntu的镜像部署Docker Swarm服务,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46397304/

10-11 20:57