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


103

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

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

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


4
docker ps와 같은 모든 docker 명령 (도커 -v 제외)
Glen Pierce

docker attach containerName
Mattia Dinosaur

1
또는 시도 docker ps
Mattia Dinosaur

2
sudo systemctl 상태 도커
Duk

docker ps-----이 명령은 RUNNING 컨테이너 만 표시합니다
Suhaib

답변:


109

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

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있으며 데몬을 사용할 수없는 경우 오류가 발생합니다.


bash 스크립트 의 docker inspect …내부에 어떻게 넣 if겠습니까?
François Romain

15
if [ $(docker inspect -f '{{.State.Running}}' $container_name) = "true" ]; then echo yup; else echo nope; fi
BMitch

2
docker inspect -f '{{.State.Restarting}}' $container_name다시 시작 정책으로 컨테이너를 시작 하기 때문에 사용 하지만 여기서 "true"는 피하고 싶은 것입니다.
stav meir

4
bash와 docker는 if컨테이너가 실행되지 않을 때 위의 명령문에 대해 불평합니다 . 이것은 거짓 사건에 대한 원치 않는 분출을 숨 깁니다 : if [ "$(docker inspect -f '{{.State.Running}}' ${container_name} 2>/dev/null)" = "true" ]; then echo yup; else echo nope; fi
Trevor

1
@MarcoLackovic은 위의 "시스템 설치"부분을 놓친 것 같습니다.
BMitch

48

나는 결국 사용했다

docker info

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


6
이 대답은 과소 평가되었습니다. 크로스 플랫폼이며 빠르게 통과 / 실패합니다.
Andy Fleming

2
docker info > /dev/null 2>&1출력이 필요하지 않은 경우
buggymcbugfix 2011

22

다음을 사용하여 도커 상태를 확인할 수 있습니다. 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 *

이것은 질문에 대답하지 않습니다. "컨테이너 이름으로 확인"
jens.klose

네, 질문이 모호한 것 같습니다. 컨테이너가 실행 중인지 확인하려면을 사용해야합니다 docker ps --filter name=pattern. 다음 플래그를 추가하여 상태 만 확인하도록 출력 형식을 지정할 수 있습니다.--format {{.Status}}
Hernan Garcia

16

모든 컨테이너 나열 :

docker container ls -a

ls= 목록
-a= 모두

"상태"열 확인


1
그것이 모든 플랫폼에서 작동하기 때문에 내가 필요한 것입니다 !!
Rolljee

쉽고 간단하게 ... 일했습니다.
RMati

15

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


9

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

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

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



8

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

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


5

이 명령으로 systemctl status docker도커의 상태를 확인할 수 있습니다 . 시작하려면 systemctl start docker대신 사용할 수 있습니다 , 및 각각 systemctl시도 할 수 있습니다 .serviceservice docker statusservice docker start


5
이 답변은 최종 사용자가 systemd초기화로 사용 하고 있다고 가정합니다 .
라파엘

systemctl status docker도커 서비스가 실행 중임을 올바르게 보여줍니다. 감사합니다.
imsrgadich

3

다음 명령을 사용하여 특정 Docker 컨테이너가 실행 중인지 여부를 확인할 수도 있습니다.

docker inspect postgres | grep "Running"

이 명령은 예를 들어 내 postgres 컨테이너가 실행 중인지 확인하고 출력을 "Running" 으로 반환합니다 . true

도움이 되었기를 바랍니다.


이것이 바로 제가 찾던 것입니다. 그리고 작동합니다. (무언가에 투표 한 사람들이 이유를 말할 때 좋습니다. 그래서 noobs는 더 나은 SO 에티켓을 배울 수 있습니다. :))
allenjom

나는 투표하지 않았지만 "Error : No such object : postgres"
ged

3

운영:

docker version

도 커가 실행 중이면 다음이 표시됩니다.

Client: Docker Engine - Community
 Version:           ...
 [omitted]

Server: Docker Engine - Community
 Engine:
  Version:          ...
 [omitted]

도 커가 실행되고 있지 않으면 다음이 표시됩니다.

Client: Docker Engine - Community
 Version:           ...
 [omitted]

Error response from daemon: Bad response from Docker engine


1

Mac에서는 다음 이미지를 볼 수 있습니다.

여기에 이미지 설명 입력

Docker 아이콘을 마우스 오른쪽 버튼으로 클릭하면 다음이 표시됩니다.

여기에 이미지 설명 입력

또는 :

docker ps

docker run hello-world


0

SSH를 체크인하는 방법.

systemctl

응답 : D-Bus 연결 실패 : 작업이 허용되지 않음

Docker 또는 WSL 컨테이너입니다.


0

docker ps -a

살아 있든 죽었 든 모든 도커 컨테이너를 볼 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.