我怎样才能让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
谢谢…