[bash] 도커 엔진과 도커 컨테이너가 실행 중인지 확인하는 방법은 무엇입니까?

스크립트에서 다음을 확인해야합니다.

a) 도커 엔진이 작동하고 있습니까?
b) 컨테이너 이름이 주어지면 해당 도커 컨테이너가 실행되고 있습니까?

[이 질문의 초기 문구는 모호했습니다. 일부 사람들은이를 “도커 엔진 검사”로 해석하고 다른 사람들은 “도커 컨테이너 검사”로 해석했습니다.]



답변

특정 컨테이너를 찾고 있다면 다음을 실행할 수 있습니다.

if [ "$( docker container inspect -f '{{.State.Running}}' $container_name )" == "true" ]; then ...

크래시 루프에있는 컨테이너의 문제를 방지하고 계속해서 작동 중임을 표시하기 위해 다시 시작하는 경우 Status필드 를 확인하여 위의 내용을 개선 할 수 있습니다 .

if [ "$( docker container inspect -f '{{.State.Status}}' $container_name )" == "running" ]; then ...

dockerd가 로컬 컴퓨터에서 자체적으로 실행되고 있고 systemd가 설치되어 있는지 알고 싶다면 다음을 실행할 수 있습니다.

systemctl show --property ActiveState docker

docker info또는 로 도커에 연결할 수도 docker version있으며 데몬을 사용할 수없는 경우 오류가 발생합니다.


답변

나는 결국 사용했다

docker info

도커 엔진이 실행 중인지 bash 스크립트로 확인합니다.


답변

다음을 사용하여 도커 상태를 확인할 수 있습니다. systemctl is-active docker

➜  ~  systemctl is-active docker
active

다음과 같이 사용할 수 있습니다.

➜  ~  if [ "$(systemctl is-active docker)" = "active" ]; then echo "is alive :)" ; fi
is alive :)

➜  ~  sudo systemctl stop docker

➜  ~  if [ "$(systemctl is-active docker)" = "active" ]; then echo "is alive :)" ; fi
 * empty response *


답변

모든 컨테이너 나열 :

docker container ls -a

ls= 목록
-a= 모두

“상태”열 확인


답변

OS X 사용자 (Mojave 10.14.3)

Docker가 실행 중인지 여부를 테스트하기 위해 Bash 스크립트에서 사용하는 내용은 다음과 같습니다.

# Check if docker is running
if ! docker info >/dev/null 2>&1; then
    echo "Docker does not seem to be running, run it first and retry"
    exit 1
fi


답변

때로는 전체 컨테이너 이름을 모를 때도 있습니다.이 경우 다음이 저에게 효과적이었습니다.

if docker ps | grep -q keyword
then
    echo "Running!"
else
    echo "Not running!"
    exit 1
fi

실행중인 모든 컨테이너 프로세스를 나열합니다 (실행중인 컨테이너 프로세스 docker ps -a도 표시되지만 필요한 것은 아닙니다). 특정 단어 ( grep부분)를 검색하고 이름에 우리가 포함 된 실행중인 컨테이너를 하나 이상 찾지 못하면 실패합니다. 예어.


답변

Docker가 실행중인 경우 docker -v와 같은 모든 docker 명령 (제외 ) docker ps은 유효한 응답을 받게됩니다. 그렇지 않으면 “Is your docker daemon up and running?”이 포함 된 메시지가 표시됩니다.

작업 관리자를 확인할 수도 있습니다.