스크립트에서 다음을 확인해야합니다.
a) 도커 엔진이 작동하고 있습니까?
b) 컨테이너 이름이 주어지면 해당 도커 컨테이너가 실행되고 있습니까?
[이 질문의 초기 문구는 모호했습니다. 일부 사람들은이를 "도커 엔진 검사"로 해석하고 다른 사람들은 "도커 컨테이너 검사"로 해석했습니다.]
스크립트에서 다음을 확인해야합니다.
a) 도커 엔진이 작동하고 있습니까?
b) 컨테이너 이름이 주어지면 해당 도커 컨테이너가 실행되고 있습니까?
[이 질문의 초기 문구는 모호했습니다. 일부 사람들은이를 "도커 엔진 검사"로 해석하고 다른 사람들은 "도커 컨테이너 검사"로 해석했습니다.]
docker attach containerName
docker ps
docker ps
-----이 명령은 RUNNING 컨테이너 만 표시합니다
답변:
특정 컨테이너를 찾고 있다면 다음을 실행할 수 있습니다.
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 inspect …
내부에 어떻게 넣 if
겠습니까?
if [ $(docker inspect -f '{{.State.Running}}' $container_name) = "true" ]; then echo yup; else echo nope; fi
docker inspect -f '{{.State.Restarting}}' $container_name
다시 시작 정책으로 컨테이너를 시작 하기 때문에 사용 하지만 여기서 "true"는 피하고 싶은 것입니다.
if
컨테이너가 실행되지 않을 때 위의 명령문에 대해 불평합니다 . 이것은 거짓 사건에 대한 원치 않는 분출을 숨 깁니다 : if [ "$(docker inspect -f '{{.State.Running}}' ${container_name} 2>/dev/null)" = "true" ]; then echo yup; else echo nope; fi
나는 결국 사용했다
docker info
도커 엔진이 실행 중인지 bash 스크립트로 확인합니다.
docker info > /dev/null 2>&1
출력이 필요하지 않은 경우
다음을 사용하여 도커 상태를 확인할 수 있습니다. 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 ps --filter name=pattern
. 다음 플래그를 추가하여 상태 만 확인하도록 출력 형식을 지정할 수 있습니다.--format {{.Status}}
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
부분)를 검색하고 이름에 우리가 포함 된 실행중인 컨테이너를 하나 이상 찾지 못하면 실패합니다. 예어.
이 명령으로 systemctl status docker
도커의 상태를 확인할 수 있습니다 . 시작하려면 systemctl start docker
대신 사용할 수 있습니다 , 및 각각 systemctl
시도 할 수 있습니다 .service
service docker status
service docker start
systemd
초기화로 사용 하고 있다고 가정합니다 .
systemctl status docker
도커 서비스가 실행 중임을 올바르게 보여줍니다. 감사합니다.
다음 명령을 사용하여 특정 Docker 컨테이너가 실행 중인지 여부를 확인할 수도 있습니다.
docker inspect postgres | grep "Running"
이 명령은 예를 들어 내 postgres 컨테이너가 실행 중인지 확인하고 출력을 "Running" 으로 반환합니다 . true
도움이 되었기를 바랍니다.
운영:
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
기본 목표가 "Docker 시작시 컨테이너를 어떻게 시작할 수 있습니까?"인 경우
Docker의 재시작 정책을 사용할 수 있습니다.
기존 컨테이너에 다시 시작 정책을 추가하려면 :
Docker : 이미 생성 된 컨테이너에 다시 시작 정책 추가
예:
docker update --restart=always <container>