Docker 컨테이너 다시 시작
이전에 백그라운드에서 실행 중이던 컨테이너가 중지되면 docker는 컨테이너를 다시 시작하는 데 사용할 수 있는 몇 가지 명령을 제공합니다.
이 튜토리얼에서는 백그라운드에서 실행 중인 Nginx 서버로 도커 컨테이너를 다시 시작하는 방법을 배웁니다. 또한 일부 명령이 컨테이너를 즉시 종료하는 방법도 알아봅니다.
Docker 허브에서 Nginx 이미지 가져오기
시작하려면 도커 허브에서 Nginx 이미지를 가져와 이미지를 실행해야 합니다. 그러나 Dockerfile
을 사용하여 사용자 지정 이미지를 만들 수 있습니다.
컴퓨터에서 터미널 창을 열고 아래 명령을 사용하여 이미지를 가져옵니다.
~$ docker pull nginx:alpine
이미지에서 컨테이너 실행
이 섹션에서는 백그라운드에서 Nginx 서버를 사용하여 컨테이너를 실행합니다. 아래 명령을 사용하여 web-app
이라는 이름의 컨테이너를 실행합니다.
~$ docker run --name web-app -d -p 8000:80 nginx:alpine
이 명령에서는 --name
플래그를 사용하여 컨테이너의 이름을 생성했습니다. 또한 -d
플래그를 사용하여 백그라운드에서 컨테이너를 실행할 수 있습니다.
마지막으로 -p
플래그를 추가하여 컨테이너의 포트를 호스트에 게시했습니다. 다음 명령을 사용하여 컨테이너가 실행 중인지 확인할 수 있습니다.
~$ docker ps
출력:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c18fa4102fb2 nginx:alpine "/docker-entrypoint.…" 5 seconds ago Up 3 seconds 0.0.0.0:8000->80/tcp web-app
실행 중인 컨테이너 다시 시작
컨테이너를 다시 시작하는 데 사용할 수 있는 두 가지 접근 방식이 있습니다. 첫 번째 접근 방식은 docker start
명령을 사용하고 두 번째 접근 방식은 docker restart
명령을 사용합니다.
docker start
명령은 중지된 컨테이너를 시작하는 데 사용되며 docker restart
명령은 실행 중인 컨테이너를 다시 시작하는 데 사용됩니다.
컨테이너가 이미 실행 중이므로 아래 명령을 사용하여 web-app
컨테이너를 다시 시작합니다.
~$ docker restart web-app
아래 명령을 사용하여 컨테이너를 다시 시작한 후 컨테이너가 실행 중인지 확인하십시오.
~$ docker ps
출력:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c18fa4102fb2 nginx:alpine "/docker-entrypoint.…" 20 minutes ago Up 1 second 0.0.0.0:8000->80/tcp web-app
중지된 컨테이너 다시 시작
이 접근 방식은 이전 접근 방식과 동일합니다. 실행 중인 컨테이너를 중지하려면 docker stop
명령을 사용해야 합니다.
컨테이너가 중지되면 docker start
명령을 사용하여 중지된 컨테이너를 다시 시작합니다. 다음 명령을 실행하여 이것이 실제로 어떻게 작동하는지 확인하십시오.
~$ docker stop web-app
출력:
web-app
docker ps -a
명령을 실행하여 실행 중인 모든 컨테이너와 중지된 컨테이너를 나열하면 web-app
컨테이너의 상태가 exited(컨테이너가 중지되었음을 의미)임을 알 수 있습니다.
~$ docker ps -a
출력:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c18fa4102fb2 nginx:alpine "/docker-entrypoint.…" 32 minutes ago Exited (0) About a minute ago web-app
마지막으로 다음 명령을 사용하여 컨테이너를 다시 시작합니다.
~$ docker start web-app && docker ps
출력:
web-app
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c18fa4102fb2 nginx:alpine "/docker-entrypoint.…" 37 minutes ago Up Less than a second 0.0.0.0:8000->80/tcp web-app
Docker 컨테이너가 즉시 종료됨
컨테이너에 백그라운드에서 실행 중인 Nginx 프로세스가 있었기 때문에 이전 섹션의 컨테이너가 종료되지 않았습니다.
도커 컨테이너가 프로세스 실행을 완료하면 즉시 종료되는 경우가 있습니다. 이를 설명하기 위해 아래 명령을 실행하여 temp-web-app
이라는 이름으로 새 컨테이너를 생성합니다.
~$ docker run -w /com/web-app/ --name temp-web-app -p 8080:80 nginx:alpine pwd
출력:
/com/web-app
이 명령은 작업 디렉토리 /com/web-app
를 인쇄한 직후에 종료됩니다. 메인 프로세스가 pwd
명령을 실행하면 컨테이너가 종료되기 때문입니다.
따라서 위와 같은 명령은 서버, 데이터베이스 또는 애플리케이션 프로세스와 함께 컨테이너를 실행하는 것이 아니라 테스트 목적으로 사용해야 합니다. 아래 명령을 사용하여 temp-web-app
컨테이너의 상태를 확인하십시오.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb051673c15f nginx:alpine "/docker-entrypoint.…" 14 minutes ago Exited (0) 3 minutes ago temp-web-app
초기 시작 중에 기본 명령이 설정되기 때문에 컨테이너를 다시 시작하려는 시도는 작동하지 않습니다. 컨테이너의 기본 프로세스가 종료되는 pwd
명령을 실행한 후 컨테이너가 항상 종료됨을 의미합니다.
결론
이 자습서에서는 도커에서 컨테이너를 다시 시작하는 방법을 배웠습니다. 실행 및 중지 컨테이너를 시작하는 방법을 다루었습니다.
우리는 백그라운드에서 실행 중인 프로세스 없이 즉시 종료되는 컨테이너를 실행하는 목적을 배웠습니다.
David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.
LinkedIn GitHub