linux - Docker 使 CMD 保持事件状态以进行检查。 sleep 不适合,ping 默认不可用

标签 linux docker ubuntu kubernetes

  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/

相关文章:

docker - 如何将 tar 存档推送到私有(private) docker 注册表?

python-3.x - 在ubuntu上安装没有pip的python

javascript - 浏览器中JS字符集错误

linux - 当监视器连接到 D-sub 连接器时,linux 会发出事件吗?

docker - 如何删除docker镜像的所有构建历史?

c++ - C/C++ 中的多线程状态机实现

docker - 构建一个可以使用 LLVM 编译 ROS 项目的 docker 镜像

在不同 Linux 版本上运行的 Python 可执行文件

linux - 使用 sh 运行 bash 脚本

linux - CentOS 7 的内核构建 : kernel-firmware not generated