Docker Desktop 재시작 명령어 사용 방법: Docker Desktop 다시 시작하기

DockerBeginner
지금 연습하기

소개

이 랩에서는 Docker 환경을 관리하는 기본적인 작업인 Docker Desktop 을 다시 시작하는 방법을 배우게 됩니다. 이 LabEx VM 에서 제공되는 Linux 환경에서 Docker 데몬 서비스를 다시 시작하는 것과 동일한 Docker Desktop 재시작의 목적을 살펴볼 것입니다.

기본 재시작 명령을 실행하고, 분리 모드 (detached mode) 로 Docker Desktop 을 다시 시작하는 방법, 그리고 재시작 프로세스에 대한 타임아웃을 설정하는 방법을 배우게 됩니다. 이 실습을 통해 필요할 때 데몬을 다시 시작하여 Docker 설정을 효과적으로 관리하고 문제 해결할 수 있는 지식을 갖추게 될 것입니다.

Docker Desktop 재시작의 목적 이해

이 단계에서는 Docker Desktop 을 재시작하는 목적을 이해할 것입니다. LabEx 환경은 Docker 가 사전 설치된 Linux VM 을 제공하지만, Docker 데몬을 재시작하는 개념은 다른 운영 체제의 Docker Desktop 을 포함하여 Docker 환경을 관리하는 데 기본입니다.

Docker 데몬은 이미지, 컨테이너, 네트워크 및 볼륨과 같은 Docker 객체를 관리하는 백그라운드 서비스입니다. 때로는 다음과 같은 다양한 이유로 Docker 데몬을 다시 시작해야 할 수 있습니다.

  • 구성 변경 사항 적용: Docker 데몬에 대한 일부 구성 변경 사항은 적용하려면 재시작이 필요합니다.
  • 문제 해결: 데몬을 다시 시작하면 컨테이너가 시작되지 않거나, 네트워킹 문제 또는 성능 문제와 같은 다양한 문제를 해결할 수 있습니다.
  • 리소스 확보: 경우에 따라 데몬을 다시 시작하면 Docker 프로세스에서 소비될 수 있는 시스템 리소스를 확보하는 데 도움이 될 수 있습니다.

LabEx VM 과 같은 Linux 환경에서는 docker 명령줄 인터페이스를 통해 Docker 데몬과 직접 상호 작용합니다. 다른 운영 체제에서 Docker Desktop 을 다시 시작하는 것과 동일한 작업은 Linux 에서 Docker 데몬 서비스를 다시 시작하는 것입니다.

LabEx VM 에서 Docker 서비스의 상태를 확인하려면 systemctl 명령을 사용할 수 있습니다.

systemctl status docker

Docker 서비스가 활성 상태로 실행 중임을 나타내는 출력을 볼 수 있습니다.

● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since ...
       Docs: https://docs.docker.com
   Main PID: ... (dockerd)
      Tasks: ...
     Memory: ...
        CPU: ...
     CGroup: /system.slice/docker.service
             └─... /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

이 출력은 Docker 데몬이 시스템 서비스로 실행 중임을 확인합니다. 이 특정 단계에서는 환경을 방해하지 않기 위해 서비스를 다시 시작하지 않지만, 상태를 이해하는 것이 이를 관리하는 첫 번째 단계입니다.

기본 Docker Desktop 재시작 명령어 실행

이 단계에서는 Docker Desktop 을 다시 시작하는 것과 유사한 Linux 환경에서 Docker 데몬을 다시 시작하는 방법을 배우게 됩니다. 이전 단계에서 배운 것처럼 Docker 데몬은 시스템 서비스입니다. Linux 에서 시스템 서비스를 다시 시작하려면 systemctl 명령을 사용합니다.

Docker 서비스를 다시 시작하는 기본 명령은 sudo systemctl restart docker입니다. sudo 명령은 시스템 서비스를 다시 시작하려면 일반적으로 관리자 권한이 필요하기 때문에 사용됩니다. systemctl restart 명령은 서비스가 실행 중인 경우 중지한 다음 다시 시작합니다.

다시 시작하기 전에 데몬이 응답하는지 확인하기 위해 간단한 Docker 명령을 실행해 보겠습니다. docker ps를 사용하여 현재 실행 중인 컨테이너를 나열할 수 있습니다. 아직 컨테이너를 시작하지 않았으므로 출력은 비어 있거나 열 머리글만 표시됩니다.

docker ps

이제 Docker 서비스를 다시 시작해 보겠습니다. 다음 명령을 실행합니다.

sudo systemctl restart docker

이 명령은 Docker 데몬을 중지한 다음 시작합니다. 오류가 발생하지 않는 한 많은 출력을 볼 수 없습니다.

재시작이 완료된 후 Docker 서비스의 상태를 다시 확인하여 실행 중인지 확인합니다.

systemctl status docker

이전 단계와 유사한 출력을 볼 수 있으며, 서비스가 활성 상태로 실행 중임을 나타내지만 "Active" 줄에는 최근 타임스탬프가 표시되어 다시 시작되었음을 나타냅니다.

마지막으로, 재시작 후 Docker 데몬이 응답하는지 확인하기 위해 docker ps를 다시 실행해 보겠습니다.

docker ps

출력은 다시 컨테이너 헤더를 표시하여 Docker 데몬이 작동 중임을 확인해야 합니다.

Docker 데몬을 다시 시작하는 것은 일반적인 문제 해결 단계이며 특정 구성 변경 후 필요합니다.

Docker Desktop 을 detached 모드로 재시작

이 단계에서는 "분리 모드 (detached mode)"로 프로세스를 실행하는 개념과 Docker 데몬 관리와의 관련성을 살펴봅니다. "분리 모드"라는 용어는 백그라운드에서 Docker 컨테이너를 실행하는 것과 더 일반적으로 관련되어 있지만, 터미널을 연결하지 않고 프로세스를 실행하는 기본 원리는 Docker 데몬과 같은 시스템 서비스와 관련이 있습니다.

전경 (foreground) 에서 명령을 실행하면 명령이 완료될 때까지 터미널이 사용됩니다. 반대로, 백그라운드 또는 "분리된 (detached)" 상태로 프로세스를 실행하면 다른 작업을 위해 터미널을 계속 사용할 수 있습니다. Docker 데몬과 같은 시스템 서비스는 시스템이 시작될 때 자동으로 백그라운드에서 실행되도록 설계되었습니다.

systemctl의 컨텍스트에서 restart 명령은 기본적으로 터미널을 연결하지 않는 방식으로 실행됩니다. 중지 및 시작 프로세스를 시작하고 서비스가 완전히 시작되는 중이더라도 명령이 실행되면 터미널로 제어를 반환합니다. 이는 컨테이너의 분리 모드 개념과 유사합니다.

이를 설명하기 위해 이전과 동일한 명령을 사용하여 Docker 서비스를 다시 시작해 보겠습니다.

sudo systemctl restart docker

명령을 실행한 후 터미널 프롬프트가 즉시 반환되는 것을 확인하십시오. systemctl restart 명령 자체는 반환하기 전에 Docker 데몬이 완전히 작동할 때까지 기다리지 않습니다. 데몬은 이제 백그라운드에서 다시 시작됩니다.

서비스가 다시 시작되고 결국 백그라운드에서 실행되고 있는지 상태를 확인하여 확인할 수 있습니다.

systemctl status docker

중지에서 시작으로, 마지막으로 활성 (실행 중) 으로 상태가 변경되는 것을 볼 수 있습니다. 이는 재시작 명령을 시작한 후 터미널 세션과 독립적으로 발생합니다.

systemctl restart의 이러한 동작은 -d 또는 --detach 플래그를 사용하여 Docker 컨테이너를 실행하는 것과 유사하며, 여기서 컨테이너는 백그라운드에서 시작되고 터미널을 차단하지 않습니다.

타임아웃 설정 후 Docker Desktop 재시작

이 단계에서는 타임아웃과 함께 Docker 데몬을 다시 시작하는 방법을 배우게 됩니다. systemctl restart 명령 자체에는 일부 Docker 명령 (예: docker stop --time) 과 같은 내장된 타임아웃 매개변수가 없지만, 타임아웃의 개념은 서비스를 관리할 때 중요합니다.

systemctl의 컨텍스트에서 재시작 중에 발생하는 중지 및 시작 작업에는 서비스 유닛 파일 내에 정의된 자체 내부 타임아웃이 있습니다. 서비스가 이러한 정의된 타임아웃 내에 중지되거나 시작되지 않으면 systemd(시스템 및 서비스 관리자) 는 일반적으로 오류를 보고합니다.

예를 들어, systemctl restart가 실행될 때 Docker 데몬이 바쁘고 종료하는 데 너무 오래 걸리면 systemd가 결국 프로세스를 종료하고 실패를 보고할 수 있습니다. 마찬가지로, 데몬이 구성된 타임아웃 내에 시작되지 않으면 시작 작업이 실패합니다.

전체 재시작 프로세스에 대해 systemctl restart 명령 자체에 타임아웃을 직접 지정할 수는 없지만, 재시작 중에 서비스 상태의 동작을 관찰하여 타임아웃이 관련될 수 있는 시나리오를 시뮬레이션할 수 있습니다.

Docker 서비스를 다시 시작해 보겠습니다.

sudo systemctl restart docker

명령을 실행한 직후 상태를 빠르게 확인할 수 있습니다. "활성 (실행 중)" 상태로 돌아가기 전에 잠시 "중지 중" 또는 "활성화 중" 상태를 볼 수 있습니다.

systemctl status docker

서비스가 이러한 상태를 전환하는 데 걸리는 시간은 Docker 서비스 유닛에 대해 구성된 내부 타임아웃의 영향을 받습니다. 서비스가 중지 또는 시작 중에 멈추면 systemd가 해당 타임아웃을 적용합니다.

예를 들어, 중지 작업이 시간 초과되면 systemctl status docker 출력 또는 시스템 로그 (journalctl -u docker) 에서 오류 메시지를 볼 수 있습니다.

전체 systemctl restart 작업에 대한 타임아웃을 설정하는 직접적인 명령줄 옵션은 없지만, 기본 중지 및 시작 프로세스가 타임아웃의 영향을 받는다는 것을 이해하는 것은 서비스 관리 문제를 해결하는 데 중요합니다. 재시작이 지속적으로 실패하는 경우, 타임아웃 오류에 대한 서비스 로그를 조사하는 것이 좋은 시작점입니다.

요약

이 Lab 에서는 Linux 환경에서 Docker 데몬 서비스를 다시 시작하는 것과 유사한 Docker Desktop 을 다시 시작하는 목적을 배웠습니다. 구성 변경 사항을 적용하고, 문제를 해결하고, 리소스를 확보하기 위해 다시 시작하는 것이 필요하다는 것을 이해했습니다. 또한 Linux VM 에서 systemctl status docker 명령을 사용하여 Docker 서비스의 상태를 확인하는 방법도 배웠습니다.

그런 다음 기본 docker desktop restart 명령을 실행했습니다. Lab 환경에서는 Docker 데몬과 직접 상호 작용하는 Linux VM 을 사용합니다. 또한 분리 모드 (detached mode) 및 지정된 타임아웃 (timeout) 으로 Docker Desktop 을 다시 시작하는 방법을 탐구하여 Docker 환경을 효과적으로 관리하기 위한 이러한 옵션의 실제적인 의미를 이해했습니다.