我正在尝试运行 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 run
Docker Desktop GUI 运行它,而我也想了解为什么成功启动的容器和未成功启动的容器的日志都是空的。
答案1
与许多基础镜像一样,redhat/ubi8
默认运行一个 shell(/bin/bash
在这种情况下,但这并不重要)。
如果你运行bash
并且标准输入已关闭,它会立即退出。如果你运行以下命令,你会看到相同的行为:
bash < /dev/null
docker run
因为您在没有指定的情况下执行-i
,所以这正是这里发生的情况:
- 你跑
docker run redhat/ubi8
- 图像
redhat/ubi8
运行/bin/bash
/bin/bash
看到 stdin 已关闭,因此退出
如果您想看到不同的行为,请在命令行中添加-i
和:-t
docker run -it redhat/ubi8
或者运行除 shell 之外的程序:
docker run redhat/ubi8 sleep inf