我无法使用基于ubuntu的映像部署Docker Swarm服务

时间:2017-09-25 03:45:13

标签: bash ubuntu docker docker-swarm docker-swarm-mode

我是Docker / Docker Swarm的新手,我想在Swarm上创建一个自定义的mosquitto服务。我创建了一个自定义的mosquitto图像 来自ubuntu的最新search();,然后我添加了一些工具(ping,ipconfig)。我可以使用onYouTubeApiLoad()lcsf/mosquitto3运行单个容器,但我无法使用该图像创建Swarm服务。该服务未成功创建。下面有一些输出。

Dockerfile:

docker run

Docker服务创建输出:

/bin/bash

此输出显示在循环中,然后我使用ctrl + c停止它,服务已创建,但不会运行,具有0/1副本。

Docker service ps mqtt(我的自定义名称)输出,有3个节点。

FROM ubuntu:latest RUN apt-get -y update RUN apt-get install -y mosquitto mosquitto-clients EXPOSE 80 443 1883 8083 8883

就是这样,我希望有人可以帮助我。在此先感谢,我很抱歉'我的英语和Stack Overflow技能。

更新#1

绑定后从overall progress: 0 out of 1 tasks 1/1: preparing [========> ] verify: Detected task failure命令输出以创建服务:

ID NAME IMAGE NODE
DESIRED STATE CURRENT STATE ERROR PORTS llqr0gysz4bj mqtt.1 lcsf/mosquitto3:latest Docker02 Ready Ready 2 seconds ago kcwfqovyn2mp \_ mqtt.1 lcsf/mosquitto3:latest Docker03 Shutdown Complete 2 seconds ago ruisy599nbt4 \_ mqtt.1 lcsf/mosquitto3:latest Docker03 Shutdown Complete 7 seconds ago xg1lib5x8vt9 \_ mqtt.1 lcsf/mosquitto3:latest Docker02 Shutdown Complete 13 seconds ago fgm9wu25t0lj \_ mqtt.1 lcsf/mosquitto3:latest Docker03 Shutdown Complete 18 seconds ago

更新#2

这是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 directory Sep 25 09:01:15 Docker01 systemd-udevd[31967]: Could not generate persistent MAC address for vethaf2978b: No such file or directory Sep 25 09:01:15 Docker01 kernel: docker0: port 1(vethaf2978b) entered blocking state Sep 25 09:01:15 Docker01 kernel: docker0: port 1(vethaf2978b) entered disabled state Sep 25 09:01:15 Docker01 kernel: device vethaf2978b entered promiscuous mode Sep 25 09:01:15 Docker01 kernel: IPv6: ADDRCONF(NETDEV_UP): vethaf2978b: link is not ready Sep 25 09:01:15 Docker01 kernel: eth0: renamed from veth8e5ebcb Sep 25 09:01:15 Docker01 kernel: IPv6: ADDRCONF(NETDEV_CHANGE): vethaf2978b: link becomes ready Sep 25 09:01:15 Docker01 kernel: docker0: port 1(vethaf2978b) entered blocking state Sep 25 09:01:15 Docker01 kernel: docker0: port 1(vethaf2978b) entered forwarding state Sep 25 09:01:15 Docker01 kernel: docker0: port 1(vethaf2978b) entered disabled state Sep 25 09:01:15 Docker01 kernel: veth8e5ebcb: renamed from eth0 Sep 25 09:01:15 Docker01 kernel: docker0: port 1(vethaf2978b) entered disabled state Sep 25 09:01:15 Docker01 kernel: device vethaf2978b left promiscuous mode Sep 25 09:01:15 Docker01 kernel: docker0: port 1(vethaf2978b) entered disabled state Sep 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 1s Sep 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"

1 个答案:

答案 0 :(得分:3)

您的问题是您的dockerfile。您正在swarm服务上运行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"]

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