无法通过 docker run 命令运行 redhat/ubi8 最新版本

无法通过 docker run 命令运行 redhat/ubi8 最新版本

我正在尝试运行 redhat/ubi8。

docker pull redhat/ubi8
docker run redhat/ubi8

docker run命令返回,没有输出。

docker container list命令列出容器:

71b0897317aa redhat/ubi8:latest "/bin/bash" 21 分钟前 退出 (0) 21 分钟前 amazing_volhard

尝试获取日志但docker logs amazing_volhard没有输出。

一些额外的诊断事实:

  • 最奇怪的是,我可以通过单击运行使用 Docker Desktop 成功运行此映像。正在运行的容器似乎正在运行,但同时向日志输出零行
  • 我还可以通过命令行成功运行其他 Linux 映像,docker run例如 Cassandra:latest,或者docker run -d -p 80:80 docker/getting-started全部成功写入日志

问题

尽管我理解 redhat/ubi8 是一个基础镜像,目的是在其上构建我自己的自定义镜像,但仍然想了解为什么我不能通过docker runDocker Desktop GUI 运行它,而我也想了解为什么成功启动的容器和未成功启动的容器的日志都是空的。

答案1

与许多基础镜像一样,redhat/ubi8默认运行一个 shell(/bin/bash在这种情况下,但这并不重要)。

如果你运行bash并且标准输入已关闭,它会立即退出。如果你运行以下命令,你会看到相同的行为:

bash < /dev/null

docker run因为您在没有指定的情况下执行-i,所以这正是这里发生的情况:

  1. 你跑docker run redhat/ubi8
  2. 图像redhat/ubi8运行/bin/bash
  3. /bin/bash看到 stdin 已关闭,因此退出

如果您想看到不同的行为,请在命令行中添加-i和:-t

docker run -it redhat/ubi8

或者运行除 shell 之外的程序:

docker run redhat/ubi8 sleep inf

相关内容