我想自动运行多个容器并创建一些东西,
但是一些图像,例如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"
Run Code Online (Sandbox Code Playgroud)
但'docker ps'什么都没显示,我试着通过输入以下内容来构建Dockerfile:
FROM swarm
ENTRYPOINT ["echo"]
Run Code Online (Sandbox Code Playgroud)
并且图像不会运行,并显示错误消息:
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".
Run Code Online (Sandbox Code Playgroud)
我无法理解这个错误......我怎么能让swarm容器运行..?
(抱歉,我的英语不好))
首先,你不想混合-i和-d交换机.要么以交互模式或分离模式运行容器.在你的情况下处于分离模式:
docker run -d swarm /bin/bash tail -f /dev/null
Run Code Online (Sandbox Code Playgroud)
也不需要使用-t标志分配tty ,因为这只需要在交互模式下完成.
你应该看看 Docker run reference
建议使用-d,因为只需一个命令就可以运行容器,而不需要通过按Ctrl + P + Q来分离容器的终端.
但是,-d选项存在问题.除非命令未在前台运行,否则容器会立即停止. Docker 要求您的命令继续在前台运行.否则,它认为您的应用程序停止并关闭容器.
问题是某些应用程序不在前台运行.
在这种情况下,您可以在命令中添加tail -f/dev/null.通过这样做,即使您的主命令在后台运行,您的容器也不会停止,因为尾部在前台继续运行.
docker run -d swarm tail -f/dev/null
docker ps显示容器
现在,您可以使用docker exec container_name命令附加容器
要么
docker run -d swarm命令tail -f/dev/null
| 归档时间: |
|
| 查看次数: |
16129 次 |
| 最近记录: |