Docker
無法通過 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 成功執行這個鏡像,只需點擊執行。正在執行的容器似乎正在執行,但也會向 log 輸出零行。
- 我還可以通過命令行成功執行其他 linux 映像
docker run
,例如 cassandra:latest,或者docker run -d -p 80:80 docker/getting-started
全部成功寫入日誌問題
雖然我知道 redhat/ubi8 是一個基礎鏡像,目的是在上面建構我自己的自定義鏡像,但我仍然想了解,為什麼我不能執行它
docker run
而我可以通過 Docker 桌面 GUI 執行它,我也想了解為什麼成功啟動的容器和未成功啟動的容器的日誌都是空的。
像許多基礎鏡像一樣,
redhat/ubi8
預設情況下執行一個 shell(/bin/bash
在這種情況下,但這並不重要)。如果你執行
bash
並且標準輸入被關閉,它會立即退出。如果您執行以下內容,您可以看到相同的行為:bash < /dev/null
因為您在
docker run
沒有指定的情況下執行-i
,所以這正是這裡發生的事情:
- 你跑
docker run redhat/ubi8
- 圖像
redhat/ubi8
執行/bin/bash
/bin/bash
看到標準輸入已關閉,因此退出如果您想查看不同的行為,請將
-i
和添加-t
到您的命令行:docker run -it redhat/ubi8
或者執行 shell 以外的東西:
docker run redhat/ubi8 sleep inf