Docker
檢查容器/服務是否使用 docker-compose 執行
我正在使用
docker-compose
.一些命令像
up -d service_name
orstart service_name
正在立即返回,如果您不希望容器執行依賴於 shell 的狀態,這將非常有用,就像它們對正常up service_name
. 一個案例是從某種持續集成/傳遞伺服器執行它。但是這種執行/啟動服務的方式並沒有提供任何關於服務實際狀態的回饋。
命令的Docker Compose CLI 參考
up
確實提到了相關選項,但是,對於 version1.7.1
,它與 互斥-d
:--abort-on-container-exit Stops all containers if any container was stopped. *Incompatible with -d.*
我可以以某種方式手動檢查容器是否確實在工作並且沒有因為某些錯誤而停止?
docker-compose ps -q <service_name>
將顯示容器 ID,無論它是否正在執行,只要它是創建的。docker ps
僅顯示那些實際執行的。讓我們結合這兩個命令:
if [ -z `docker ps -q --no-trunc | grep $(docker-compose ps -q <service_name>)` ]; then echo "No, it's not running." else echo "Yes, it's running." fi
docker ps
預設顯示短版本的 ID,所以我們需要指定--no-trunc
標誌。更新:如果服務沒有執行,它會拋出“grep usage”警告。感謝@Dzhuneyt,這是更新的答案。
if [ -z `docker-compose ps -q <service_name>` ] || [ -z `docker ps -q --no-trunc | grep $(docker-compose ps -q <service_name>)` ]; then echo "No, it's not running." else echo "Yes, it's running." fi