Docker 컨테이너 다시 시작

David Mbochi Njonge 2023년6월20일
  1. Docker 허브에서 Nginx 이미지 가져오기
  2. 이미지에서 컨테이너 실행
  3. 실행 중인 컨테이너 다시 시작
  4. 중지된 컨테이너 다시 시작
  5. Docker 컨테이너가 즉시 종료됨
  6. 결론
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 Mbochi Njonge avatar David Mbochi Njonge avatar

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

관련 문장 - Docker Container