docker compose start 명령어 사용법: 서비스 시작하기

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker-compose start 명령어를 사용하여 멀티 컨테이너 Docker 애플리케이션을 관리하는 방법을 배우게 됩니다. 먼저, 서비스를 정의하기 위해 간단한 docker-compose.yml 파일을 생성하는 것으로 시작합니다.

Compose 파일을 생성한 후, 단일 명령어를 사용하여 파일 내에 정의된 모든 서비스를 시작하는 연습을 할 것입니다. 마지막으로, Compose 구성에서 특정 서비스를 선택적으로 시작하는 방법을 배우게 됩니다. 이러한 실습 경험을 통해 Docker Compose 프로젝트를 효과적으로 관리하는 데 필요한 기본적인 기술을 습득할 수 있습니다.

간단한 docker-compose.yml 파일 생성

이 단계에서는 간단한 docker-compose.yml 파일을 생성합니다. Docker Compose 는 멀티 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구입니다. Compose 를 사용하면 YAML 파일을 사용하여 애플리케이션의 서비스를 구성합니다. 그런 다음, 단일 명령어로 구성에서 모든 서비스를 생성하고 시작합니다.

docker-compose.yml 파일을 생성하기 전에 Docker Compose 를 설치해야 합니다. LabEx 환경에는 미리 설치되어 있지 않으므로 pip를 사용하여 설치합니다.

먼저, 패키지 목록을 업데이트하고 pip가 아직 설치되지 않은 경우 설치합니다.

sudo apt update
sudo apt install -y python3-pip

이제 pip를 사용하여 Docker Compose 를 설치할 수 있습니다.

pip install docker-compose

설치가 완료되면 Docker Compose 의 버전을 확인하여 설치를 확인할 수 있습니다.

docker-compose --version

docker-compose version 1.29.2, build 5becea4c와 유사한 출력을 볼 수 있습니다.

이제 Docker Compose 가 설치되었으므로 프로젝트 디렉토리를 생성하고 해당 디렉토리로 이동합니다. 이 디렉토리 안에 docker-compose.yml 파일을 생성합니다.

mkdir ~/project/my-compose-app
cd ~/project/my-compose-app

다음으로, nano 편집기를 사용하여 docker-compose.yml 파일을 생성합니다.

nano docker-compose.yml

nano 편집기 내에서 다음 내용을 붙여넣습니다. 이 docker-compose.yml 파일은 nginx 이미지를 사용하고 컨테이너의 포트 80 을 호스트 머신의 포트 8080 에 매핑하는 web이라는 단일 서비스를 정의합니다.

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"

이 파일을 자세히 살펴보겠습니다.

  • version: '3.8'은 Compose 파일 형식 버전을 지정합니다.
  • services:는 애플리케이션을 구성하는 다양한 서비스를 정의합니다.
  • web:은 서비스의 이름입니다. 원하는 이름을 선택할 수 있습니다.
  • image: nginx:latest는 이 서비스에 사용할 Docker 이미지를 지정합니다. 이 경우, 공식 Nginx 이미지의 최신 버전을 사용합니다. 서비스 시작 시 이 이미지를 가져올 것입니다.
  • ports:는 호스트와 컨테이너 간의 포트를 매핑합니다.
  • - "8080:80"은 컨테이너 내부의 포트 80 (Nginx 가 기본적으로 실행되는 곳) 을 호스트 머신의 포트 8080 에 매핑합니다. 즉, 웹 브라우저에서 http://localhost:8080을 방문하거나 터미널에서 curl을 사용하여 Nginx 웹 서버에 액세스할 수 있습니다.

Ctrl + X, Y, Enter를 눌러 파일을 저장합니다.

cat 명령어를 사용하여 파일의 내용을 확인할 수 있습니다.

cat docker-compose.yml

방금 붙여넣은 YAML 내용을 볼 수 있습니다.

Compose 파일에 정의된 모든 서비스 시작

이 단계에서는 docker-compose.yml 파일에 정의된 모든 서비스를 시작합니다. 이를 위해 docker-compose up 명령어를 사용합니다.

먼저, docker-compose.yml 파일을 생성한 디렉토리에 있는지 확인합니다.

cd ~/project/my-compose-app

이제 docker-compose up 명령어를 실행합니다. -d 플래그는 컨테이너를 detached mode(분리 모드) 로 실행합니다. 즉, 컨테이너가 백그라운드에서 실행되며 터미널을 차단하지 않습니다.

docker-compose up -d

이 명령어를 처음 실행하면 Docker Compose 는 다음을 수행합니다.

  1. 현재 디렉토리에서 docker-compose.yml 파일을 찾습니다.
  2. 서비스 정의를 읽습니다.
  3. 각 서비스에 대해 지정된 이미지가 로컬에 있는지 확인합니다. 그렇지 않은 경우 Docker Hub 에서 이미지를 가져옵니다. 이 경우 nginx:latest 이미지를 가져옵니다.
  4. 각 서비스에 대한 컨테이너를 생성하고 시작합니다.

이미지가 가져와지고 컨테이너가 생성 및 시작되고 있음을 나타내는 출력을 볼 수 있습니다.

Pulling web (nginx:latest)...
latest: Pulling from library/nginx
... (output showing image layers being downloaded)
Status: Downloaded newer image for nginx:latest
Creating my-compose-app_web_1 ... done

명령어가 완료된 후, docker ps 명령어를 사용하여 컨테이너가 실행 중인지 확인할 수 있습니다.

docker ps

nginx:latest 이미지를 사용하고 상태가 Upweb 컨테이너에 대한 항목을 볼 수 있습니다. 컨테이너 이름은 my-compose-app_web_1과 유사합니다.

Nginx 서버가 실행 중이고 액세스 가능한지 추가로 확인하기 위해 curl 명령어를 사용하여 호스트 머신의 포트 8080 에서 웹 서버에 액세스할 수 있습니다.

curl http://localhost:8080

터미널에서 기본 Nginx 환영 페이지 HTML 출력을 볼 수 있습니다. 이는 컨테이너가 실행 중이고 포트 매핑이 올바르게 작동하고 있음을 확인합니다.

Compose 파일에 정의된 특정 서비스 시작

이전 단계에서는 docker-compose up을 사용하여 docker-compose.yml 파일에 정의된 모든 서비스를 시작했습니다. 이 단계에서는 Compose 파일에 여러 서비스가 정의되어 있는 경우 특정 서비스를 시작하는 방법을 배웁니다.

현재 docker-compose.yml 파일에는 하나의 서비스 (web) 만 있지만, 여러 서비스 (웹 서버, 데이터베이스, 백엔드 API 등) 가 있는 더 복잡한 애플리케이션을 사용하는 경우 특정 서비스를 시작하는 명령어가 유용합니다.

먼저, 현재 실행 중인 서비스를 중지해 보겠습니다. docker-compose down 명령어를 사용하여 이 작업을 수행할 수 있습니다. 이 명령어는 up으로 생성된 컨테이너, 네트워크 및 볼륨을 중지하고 제거합니다.

~/project/my-compose-app 디렉토리에 있는지 확인합니다.

cd ~/project/my-compose-app

이제 docker-compose down 명령어를 실행합니다.

docker-compose down

컨테이너와 네트워크가 중지되고 제거되고 있음을 나타내는 출력을 볼 수 있습니다.

Stopping my-compose-app_web_1 ... done
Removing my-compose-app_web_1 ... done
Removing network my-compose-app_default

docker ps를 실행하여 컨테이너가 중지되었는지 확인할 수 있습니다. Compose 파일에서 실행 중인 컨테이너가 없어야 합니다.

docker ps

이제 특정 서비스를 시작하는 방법을 시연해 보겠습니다. 명령어는 docker-compose up <service_name>입니다. 이 경우 서비스 이름은 web입니다. 다시 -d 플래그를 사용하여 detached mode(분리 모드) 로 실행합니다.

docker-compose up -d web

이 명령어는 docker-compose.yml 파일에 정의된 web 서비스만 시작합니다. 이미지는 이전 단계에서 가져왔으므로 컨테이너를 직접 생성하고 시작합니다.

다음과 유사한 출력을 볼 수 있습니다.

Creating my-compose-app_web_1 ... done

다시, docker ps를 사용하여 web 컨테이너가 실행 중인지 확인할 수 있습니다.

docker ps

Up 상태로 나열된 my-compose-app_web_1 컨테이너를 볼 수 있습니다.

이는 docker-compose.yml 파일에 정의된 서비스를 선택적으로 시작하는 방법을 보여줍니다. 이는 더 복잡한 다중 서비스 애플리케이션을 관리하는 데 유용합니다.

요약

이 랩에서는 docker-compose start 명령어를 사용하는 방법을 배웠습니다. 먼저 간단한 docker-compose.yml 파일을 생성하는 것으로 시작했습니다. 여기에는 pip를 사용하여 Docker Compose 를 설치하고, 설치를 확인하고, 프로젝트 디렉토리를 생성한 다음, docker-compose.yml 파일 자체를 생성하는 작업이 포함되었습니다. 생성된 파일은 nginx 이미지를 사용하고 포트를 매핑하여 web이라는 단일 서비스를 정의했습니다.

제공된 내용에 자세히 설명되어 있지 않은 후속 단계에서는 docker-compose start 명령어를 사용하여 Compose 파일에 정의된 모든 서비스를 시작하거나 특정 서비스를 시작합니다. 이는 Compose 파일에 정의된 다중 컨테이너 애플리케이션의 수명 주기를 관리하기 위한 docker-compose start 명령의 핵심 기능을 보여줍니다.