Docker Desktop 시작 명령어 사용법: docker desktop start

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker start 명령을 사용하여 Docker 컨테이너의 라이프사이클을 관리하는 방법을 살펴봅니다. 먼저 docker start의 기본적인 목적과 docker run과의 차이점을 이해하는 것으로 시작합니다.

실습을 통해 중지된 컨테이너를 동기적으로 시작하고, detached 모드 (분리 모드) 로 컨테이너를 시작하며, 시작 작업에 대한 타임아웃을 지정하는 방법을 배우게 됩니다. 이 랩을 마치면 docker start를 사용하여 Docker 컨테이너를 효율적으로 재개하는 데 능숙해질 것입니다.

docker desktop start 명령어의 목적 이해

이 단계에서는 docker start 명령의 목적을 이해합니다. docker start 명령은 하나 이상의 중지된 컨테이너를 시작하는 데 사용됩니다. docker stop을 사용하여 컨테이너를 중지하면 해당 상태가 저장되며, 나중에 docker start를 사용하여 다시 시작할 수 있습니다. 이는 이미지에서 새 컨테이너를 생성한 다음 시작하는 docker run과는 다릅니다.

먼저, 중지했다가 다시 시작할 수 있는 간단한 컨테이너를 만들어 보겠습니다. ubuntu 이미지를 사용하고 컨테이너를 잠시 동안 실행 상태로 유지하는 명령을 실행합니다.

docker run -d --name my-ubuntu ubuntu sleep 60

이 명령은 detached 모드 (-d) 로 Ubuntu 컨테이너를 실행하고, 이름을 my-ubuntu로 지정하며, 컨테이너 내에서 sleep 60 명령을 실행합니다. sleep 60 명령은 컨테이너를 60 초 동안 실행 상태로 유지합니다.

이제 docker ps를 사용하여 컨테이너의 상태를 확인해 보겠습니다.

docker ps

my-ubuntu 컨테이너가 Up 상태로 나열되어야 합니다.

다음으로, docker stop 명령을 사용하여 컨테이너를 중지합니다.

docker stop my-ubuntu

이 명령은 my-ubuntu 컨테이너에 중지 신호를 보냅니다.

이제 docker ps를 사용하여 컨테이너의 상태를 다시 확인해 보겠습니다.

docker ps

docker ps의 출력 (실행 중인 컨테이너만 표시) 에 my-ubuntu 컨테이너가 더 이상 나열되지 않아야 합니다. 중지된 컨테이너를 포함한 모든 컨테이너를 보려면 docker ps -a를 사용할 수 있습니다.

docker ps -a

이제 my-ubuntuExited 상태로 나열되어야 합니다. 이는 컨테이너가 중지되었음을 확인합니다.

마지막으로, docker start 명령을 사용하여 중지된 컨테이너를 시작합니다.

docker start my-ubuntu

이 명령은 my-ubuntu 컨테이너를 시작합니다.

docker ps를 사용하여 컨테이너의 상태를 마지막으로 한 번 더 확인해 보겠습니다.

docker ps

my-ubuntu 컨테이너가 다시 Up 상태로 나열되어야 합니다. 이는 docker start가 이전에 중지된 컨테이너를 성공적으로 재개했음을 보여줍니다.

요약하면, docker start는 상태를 유지하면서 중지된 컨테이너를 재개하는 데 사용되는 반면, docker run은 새 컨테이너를 생성하고 시작합니다.

Docker Desktop 동기적으로 시작

이 단계에서는 Docker 컨테이너를 동기적으로 시작하는 방법을 살펴봅니다. 컨테이너를 동기적으로 시작하면, 명령은 컨테이너가 실행을 완료할 때까지 기다린 후 터미널로 제어를 반환합니다. 이는 -d (detached, 분리) 플래그 없이 컨테이너에서 직접 명령을 실행할 때의 기본 동작입니다.

간단한 ubuntu 컨테이너를 사용하여 동기적 실행을 시연해 보겠습니다. 메시지를 출력한 다음 종료되는 명령을 실행합니다.

먼저, ubuntu 이미지를 사용할 수 있는지 확인합니다. 그렇지 않은 경우, pull 합니다.

docker pull ubuntu

이제 "Hello from Ubuntu"를 출력한 다음 종료되는 컨테이너를 동기적으로 실행합니다.

docker run --rm ubuntu echo "Hello from Ubuntu"

이 명령을 자세히 살펴보겠습니다.

  • docker run: 새 컨테이너를 생성하고 실행하는 명령입니다.
  • --rm: 이 플래그는 컨테이너가 종료될 때 자동으로 컨테이너를 제거합니다. 이는 이와 같은 임시 컨테이너에 유용합니다.
  • ubuntu: 사용할 이미지의 이름입니다.
  • echo "Hello from Ubuntu": 컨테이너 내부에서 실행될 명령입니다.

이 명령을 실행하면 "Hello from Ubuntu" 출력이 터미널에 직접 표시됩니다. 컨테이너 내부의 echo 명령이 완료되고 컨테이너가 종료될 때까지 명령 프롬프트가 반환되지 않습니다. 이것이 동기적 실행입니다.

이전 단계에서 살펴본 detached 모드와 비교해 보면, 해당 모드에서는 명령이 즉시 반환되고 컨테이너가 백그라운드에서 실행되었습니다.

동기적 동작을 더 자세히 설명하기 위해, 조금 더 오래 걸리는 명령을 실행해 보겠습니다.

docker run --rm ubuntu sleep 5

이 명령은 Ubuntu 컨테이너를 실행하고 sleep 5 명령을 실행합니다. 이 명령은 5 초 동안 실행을 일시 중지합니다. 명령이 완료되고 프롬프트가 반환되기 전에 터미널이 5 초 동안 차단되는 것을 확인할 수 있습니다. 이는 docker run 명령이 컨테이너 내부의 sleep 5 명령이 완료될 때까지 기다리기 때문입니다.

이 동기적 모드는 컨테이너에서 명령을 실행하고 스크립트 또는 워크플로우에서 추가 작업을 진행하기 전에 해당 출력 또는 완료를 기다려야 할 때 유용합니다.

Docker Desktop 을 detached 모드로 시작

이 단계에서는 Docker 컨테이너를 detached 모드로 시작하는 방법을 배웁니다. Detached 모드는 컨테이너가 백그라운드에서 실행됨을 의미하며, Docker 명령은 즉시 터미널로 제어를 반환합니다. 이는 터미널에서 직접 상호 작용할 필요가 없는 장기 실행 서비스 또는 애플리케이션에 유용합니다.

Detached 모드로 컨테이너를 시작하려면 docker run 또는 docker start 명령과 함께 -d 또는 --detach 플래그를 사용합니다.

간단한 Nginx 웹 서버 컨테이너를 detached 모드로 시작해 보겠습니다. 먼저, nginx 이미지가 로컬에 없는 경우 pull 합니다.

docker pull nginx

이제 Nginx 컨테이너를 detached 모드로 실행하고 컨테이너의 포트 80 을 호스트 머신의 포트 8080 에 매핑합니다.

docker run -d --name my-nginx -p 8080:80 nginx

이 명령을 자세히 살펴보겠습니다.

  • docker run: 새 컨테이너를 생성하고 실행합니다.
  • -d: 컨테이너를 detached 모드 (백그라운드) 로 실행합니다.
  • --name my-nginx: 컨테이너에 my-nginx라는 이름을 지정합니다.
  • -p 8080:80: 컨테이너 내부의 포트 80 을 호스트의 포트 8080 에 매핑합니다. 이렇게 하면 호스트 머신의 브라우저에서 http://localhost:8080을 통해 Nginx 웹 서버에 액세스할 수 있습니다.
  • nginx: 사용할 이미지의 이름입니다.

이 명령을 실행하면 긴 문자열이 터미널에 출력됩니다. 이것은 컨테이너 ID 입니다. 명령 프롬프트는 즉시 반환되어 컨테이너가 백그라운드에서 실행 중임을 나타냅니다.

컨테이너가 실행 중인지 확인하려면 docker ps 명령을 사용합니다.

docker ps

my-nginx 컨테이너가 Up 상태로 나열되어야 합니다.

curl을 사용하여 호스트 머신에서 Nginx 웹 서버에 액세스하는 것을 테스트할 수도 있습니다.

curl http://localhost:8080

터미널에서 기본 Nginx 환영 페이지의 HTML 콘텐츠를 볼 수 있어야 합니다. 이는 컨테이너가 실행 중이며 매핑된 포트를 통해 액세스할 수 있음을 확인합니다.

Detached 컨테이너를 중지하려면 컨테이너 이름 또는 ID 와 함께 docker stop 명령을 사용할 수 있습니다.

docker stop my-nginx

컨테이너를 중지한 후 docker ps를 사용하여 더 이상 실행되지 않는지 확인합니다.

docker ps

my-nginx 컨테이너가 출력에 나열되지 않아야 합니다.

Detached 모드로 컨테이너를 시작하는 것은 터미널을 차단하지 않고 지속적으로 작동해야 하는 서비스 및 애플리케이션을 실행하는 데 필수적입니다.

타임아웃 설정하여 Docker Desktop 시작

이 단계에서는 타임아웃과 함께 Docker 컨테이너를 시작하는 방법을 배웁니다. docker start 명령에는 컨테이너의 STDOUT/STDERR에 연결하고 신호를 전달할 수 있는 --attach 플래그가 있습니다. --attach와 함께 사용하면 클라이언트가 연결을 끊은 후 컨테이너가 중지될 때까지의 타임아웃을 설정하는 --timeout 플래그도 지정할 수 있습니다. 이는 컨테이너를 시작한 클라이언트가 종료된 경우 컨테이너가 무기한으로 계속 실행되지 않도록 하는 데 특히 유용합니다.

먼저, 타임아웃과 함께 시작할 수 있는 컨테이너를 생성해 보겠습니다. ubuntu 이미지를 사용하고 컨테이너를 계속 실행하는 명령을 실행합니다.

docker create --name my-timeout-ubuntu ubuntu sleep 60

이 명령은 ubuntu 이미지에서 my-timeout-ubuntu라는 이름의 컨테이너를 생성하고 명령을 sleep 60으로 설정합니다. 여기서는 컨테이너를 생성하지만 시작하지 않는 docker create를 사용했음에 유의하십시오.

이제 --attach--timeout 플래그를 사용하여 docker start를 사용하여 이 컨테이너를 시작합니다. 타임아웃을 5 초로 설정합니다.

docker start --attach --timeout 5 my-timeout-ubuntu

이 명령을 자세히 살펴보겠습니다.

  • docker start: 중지된 컨테이너를 시작합니다.
  • --attach: 컨테이너의 STDOUT/STDERR에 연결하고 신호를 전달합니다.
  • --timeout 5: 5 초의 타임아웃을 설정합니다. 클라이언트 (이 경우 터미널) 가 연결을 끊으면 Docker 는 컨테이너가 정상적으로 중지될 때까지 5 초 동안 기다립니다. 5 초 이내에 중지되지 않으면 Docker 는 SIGKILL 신호를 보내 강제로 중지합니다.
  • my-timeout-ubuntu: 시작할 컨테이너의 이름입니다.

이 명령을 실행하면 컨테이너의 출력에 연결됩니다. 컨테이너가 단순히 sleep 60을 실행하고 있으므로 즉시 출력이 표시되지 않습니다.

이제 클라이언트 연결 끊김을 시뮬레이션해 보겠습니다. 터미널에서 Ctrl+C를 눌러 이 작업을 수행할 수 있습니다. 이렇게 하면 컨테이너에서 분리됩니다.

Ctrl+C를 누르면 Docker 가 타임아웃 프로세스를 시작합니다. my-timeout-ubuntu 컨테이너가 중지될 때까지 5 초 동안 기다립니다. 컨테이너가 sleep 60을 실행하고 있으므로 5 초 이내에 중지되지 않으며 Docker 가 강제로 중지합니다.

컨테이너가 중지되었는지 확인하려면 docker ps -a를 사용합니다.

docker ps -a

my-timeout-ubuntuExited 상태로 나열되어야 합니다. 이는 타임아웃 메커니즘이 작동했으며 클라이언트가 연결을 끊은 후 컨테이너가 중지되었음을 확인합니다.

docker start --attach와 함께 --timeout 플래그를 사용하는 것은 클라이언트 연결로 시작된 컨테이너의 수명 주기를 관리하고 클라이언트가 예기치 않게 종료되더라도 컨테이너가 제대로 정리되도록 하는 좋은 방법입니다.

요약

이 랩에서는 중지된 컨테이너의 상태를 유지하면서 재개하는 docker start 명령의 기본적인 목적을 배웠습니다. 새 컨테이너를 생성하고 시작하는 docker run과 구별했습니다. 실질적인 단계를 통해 컨테이너를 생성하고 docker stop을 사용하여 중지하고, docker ps -a를 사용하여 중지 상태를 확인한 다음, docker start를 사용하여 다시 시작하여 docker ps로 실행 상태를 확인하는 방법을 시연했습니다.

또한 docker desktop start 명령을 사용하여 Docker Desktop 을 시작하는 다양한 방법을 살펴보았습니다. 여기에는 동기적으로 시작, detached 모드로 시작, 지정된 타임아웃으로 시작하는 방법이 포함됩니다. 이러한 옵션은 특정 요구 사항 및 워크플로우에 따라 Docker Desktop 의 시작 동작을 제어하는 유연성을 제공합니다.