CMD ['sleep', 100000]
卡住并且对 无响应ctrl + c。
有什么建议么?
问题是当 CMD 运行不正常时,通常更容易 执行 --it 进入服务器并手动执行这些操作以使它们正常运行。
没有 命令行 , run 将退出,因此 exec 将不可能。
我为此使用了 sleep ,但我看到了一个 ping,但 ubuntu 18 中的 ping 不是默认设置,也许有比为这个简单目的安装它更好的方法。
最佳答案
您可以在运行镜像时提供备用命令。这可以是您想要的任何东西——调试命令、交互式外壳、替代进程。
docker run --rm myimage ls -l /app
docker run --rm -it myimage bash
# If you're using Compose
docker-compose run myservice bash
这通常绕过了“保持容器存活”的需要,以便您可以
docker exec
进去。假设您有一个无法正常工作的容器命令:CMD ["my_command", "--crash"]
在不修改 Dockerfile 的情况下,您可以像上面那样运行交互式 shell。当你得到一个 shell 提示时,你可以运行
my_command --crash
,当它崩溃时,您可以查看文件系统中遗留的内容。重要的是
CMD
是一个完整的命令来工作。如果您有 ENTRYPOINT
,它需要使用 JSON 数组语法,并且需要运行作为命令行参数传递给它的命令(通常,它是一个以 exec "$@"
结尾的 shell 脚本)。
关于linux - Docker 使 CMD 保持事件状态以进行检查。 sleep 不适合,ping 默认不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62215322/