我怎样才能让docker集装箱运行?

我想自动运行多个容器并创build一些东西,

但是一些图像,如swarm,会在运行或启动后自动停止。

我已经尝试过了

docker run -d swarm docker run -d swarm /bin/bash tail -f /dev/null docker run -itd swarm bash -c "while true; do sleep 1; done" 

但是“docker ps”什么也没有显示,我尝试通过键入以下命令来构buildDockerfile:

 FROM swarm ENTRYPOINT ["echo"] 

和图像不会运行错误消息:

 docker: Error response from daemon: invalid header field value "oci runtime error: container_linux.go:247: starting container process caused \"exec: \\\"echo\\\": executable file not found in $PATH\"\n". 

我不明白这个错误…我怎样才能让群集容器运行..?

(对不起,我的英文不好))

首先你不想混合-i-d开关。 您可能希望以交互式或分离模式运行容器。 在你的情况下在分离模式:

 docker run -d swarm /bin/bash tail -f /dev/null 

也不需要使用-t标志来分配tty,因为这只需要在交互模式下完成。

你应该看看Docker run reference

build议使用-d ,因为只需一个命令就可以运行容器,而不需要按Ctrl + P + Q来分离容器的terminal

但是,-d选项存在问题。 您的容器立即停止, 除非命令不在前台运行。 Docker 需要你的命令在前台继续运行。 否则,它认为您的应用程序停止并closures容器。

问题是某些应用程序不能在前台运行。

在这种情况下,您可以将tail -f / dev / null添加到您的命令中。 通过这样做,即使您的主命令在后台运行,您的容器也不会停止,因为尾部仍在前台运行。

docker run -d swarm tail -f / dev / null

dockerps显示容器

现在可以使用docker exec container_name命令来附加容器

要么

docker run -d swarm命令tail -f / dev / null

你是正确的docker run -itd swarm (没有给容器的参数(bash -c“while true; do sleep 1; done”))工作正常。如果你为docker run传递参数,它将运行命令并终止容器。如果你想永久运行容器,首先使用docker run -itd swarm启动容器, 然后通过docker ps检查容器是否运行,现在容器运行,如果要在容器中执行任何命令,请使用docker exec -itd container_name命令记住:只使用不停止容器的命令。 bash -c“while true;做睡1;做这个命令会停止容器(因为这是完整的命令,如果我们在正常的terminal执行它执行和终止,这种types的命令也终止容器)。

我希望这有帮助..

基本上这是方法,但你的docker图像是swarm,所以它是不同的,我不知道swarmdocker图像,我不使用that.But后,我研究了这一点。 首先,我运行它显示的docker群图像。

在这里输入图像说明

之后,我明白我们运行docker群图像通过使用图片中只有五个命令,如创build,列表pipe理,join,帮助。 如果我们不需要像docker run -itd swarm这样的命令运行swarm image,它会把命令作为–help。 对不起,但我不知道群图像的目的是什么。 有关更多用法,请查看https://hub.docker.com/_/swarm/

我添加docker运行-itd图像tail -f / dev / null的答案不适用于swarm图像,它适用于像ubuntu,fedora,centos这样的docker镜像

只要阅读swarm映像的用法和为什么使用它。

如果你有任何问题后在https://github.com/docker/swarm-library-image/issues

谢谢…