我正在尝试创建docker swarm服务,但出现了一些奇怪的现象:
对于某些图像来说,它是成功的,对于某些图像,我会遇到错误:
docker service create nginx
89t21k3udf007pvl2ucvmdp9l
overall progress: 1 out of 1 tasks
1/1: running [==================================================>]
verify: Service converged
->成功
docker service create hello-world
8hhdki32ypfwshh2wvijkkmvb
overall progress: 0 out of 1 tasks
1/1: preparing [=================================> ]
verify: Detected task failure
->失败
供您参考:docker pull hello-world
正常工作。
给我的印象是,我们可以在所有图像上创建服务,是否有任何条款和条件?我想念什么吗?
注意:这是基本部分,但是我的主要目的是为本地注册表映像创建服务。但是在调试的第一步就发现了问题,即hello-world。
答案 0 :(得分:2)
失败是因为从hello-world Docker映像创建的容器仅显示一条消息,然后退出,并且很快发生。
由于您已经创建了群集服务,因此它将在每次失败时继续重新创建容器,这是预期的,这就是服务似乎失败的原因。
请在服务日志下方查看,您将看到容器一直在重新创建:
[ ~]$ docker service create --name helloworld hello-world iilsd1yc706zgcdg35l8sdz3z
Since --detach=false was not specified, tasks will be created in the background.
In a future release, --detach=false will become the default.
[ ~]$ docker service logs helloworld -f
helloworld.1.jxxnqzximfy7@ |
helloworld.1.zwyhf6x4cpdm@ |
helloworld.1.jxxnqzximfy7@ | Hello from Docker!
helloworld.1.zwyhf6x4cpdm@ | Hello from Docker!
helloworld.1.jxxnqzximfy7@ | This message shows that your installation appears to be working correctly.
helloworld.1.zwyhf6x4cpdm@ | This message shows that your installation appears to be working correctly.
helloworld.1.zwyhf6x4cpdm@ |
helloworld.1.jxxnqzximfy7@ |
helloworld.1.jxxnqzximfy7@ | To generate this message, Docker took the following steps:
helloworld.1.zwyhf6x4cpdm@ | To generate this message, Docker took the following steps:
helloworld.1.zwyhf6x4cpdm@ | 1. The Docker client contacted the Docker daemon.
helloworld.1.jxxnqzximfy7@ | 1. The Docker client contacted the Docker daemon.
helloworld.1.jxxnqzximfy7@ | 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
helloworld.1.zwyhf6x4cpdm@ | 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
helloworld.1.zwyhf6x4cpdm@ | (amd64)
helloworld.1.jxxnqzximfy7@ | (amd64)
helloworld.1.zwyhf6x4cpdm@ | 3. The Docker daemon created a new container from that image which runs the
helloworld.1.jxxnqzximfy7@ | 3. The Docker daemon created a new container from that image which runs the
helloworld.1.jxxnqzximfy7@ | executable that produces the output you are currently reading.
helloworld.1.zwyhf6x4cpdm@ | executable that produces the output you are currently reading.
helloworld.1.zwyhf6x4cpdm@ | 4. The Docker daemon streamed that output to the Docker client, which sent it
helloworld.1.jxxnqzximfy7@ | 4. The Docker daemon streamed that output to the Docker client, which sent it
helloworld.1.jxxnqzximfy7@ | to your terminal.
helloworld.1.zwyhf6x4cpdm@ | to your terminal.
helloworld.1.jxxnqzximfy7@ |
helloworld.1.jxxnqzximfy7@ | To try something more ambitious, you can run an Ubuntu container with:
helloworld.1.zwyhf6x4cpdm@ |
helloworld.1.zwyhf6x4cpdm@ | To try something more ambitious, you can run an Ubuntu container with:
helloworld.1.jxxnqzximfy7@ | $ docker run -it ubuntu bash
helloworld.1.jxxnqzximfy7@ |
helloworld.1.zwyhf6x4cpdm@ | $ docker run -it ubuntu bash
helloworld.1.jxxnqzximfy7@ | Share images, automate workflows, and more with a free Docker ID:
helloworld.1.jxxnqzximfy7@ | https://hub.docker.com/
helloworld.1.zwyhf6x4cpdm@ |
helloworld.1.zwyhf6x4cpdm@ | Share images, automate workflows, and more with a free Docker ID:
helloworld.1.jxxnqzximfy7@ |
helloworld.1.zwyhf6x4cpdm@ | https://hub.docker.com/
helloworld.1.zwyhf6x4cpdm@ |
helloworld.1.jxxnqzximfy7@ | For more examples and ideas, visit:
helloworld.1.jxxnqzximfy7@ | https://docs.docker.com/get-started/
helloworld.1.zwyhf6x4cpdm@ | For more examples and ideas, visit:
helloworld.1.jxxnqzximfy7@ |
helloworld.1.zwyhf6x4cpdm@ | https://docs.docker.com/get-started/
helloworld.1.zwyhf6x4cpdm@ |
helloworld.1.yw17ktyymrp6@ |
helloworld.1.yw17ktyymrp6@ | Hello from Docker!
helloworld.1.yw17ktyymrp6@ | This message shows that your installation appears to be working correctly.
您应该尝试使用其他Docker映像,例如busybox
:
[~]$ docker service create --name helloworld busybox:latest sh -c "while true; do echo Hello; sleep 2; done"
yjxzteshp7k2xf4aznj4l86s6
Since --detach=false was not specified, tasks will be created in the background.
In a future release, --detach=false will become the default.
[~]$ docker service ps helloworld --no-trunc
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
33xe78ekfjkmti8yahrcp5gug helloworld.1 busybox:latest@sha256:2a03a6059f21e150ae84b0973863609494aad70f0a80eaeb64bddd8d92465812 Running Running 1 second ago
[~]$ docker service logs -f helloworld
helloworld.1.33xe78ekfjkm@ | Hello
helloworld.1.33xe78ekfjkm@ | Hello
helloworld.1.33xe78ekfjkm@ | Hello
helloworld.1.33xe78ekfjkm@ | Hello
helloworld.1.33xe78ekfjkm@ | Hello
^C