소개
이 랩에서는 실제로 실행하지 않고도 docker compose alpha dry-run 명령을 사용하여 Docker Compose 구성에 대한 변경 사항을 테스트하는 방법을 배우게 됩니다. 이는 docker-compose.yaml 파일을 검증하고 명령을 적용하기 전에 잠재적인 영향을 이해하는 데 유용한 도구입니다.
먼저 간단한 docker-compose.yaml 파일을 준비하는 것으로 시작합니다. 그런 다음, 기본 Docker Compose 명령과 함께 dry-run 플래그를 사용하여 시뮬레이션된 출력을 관찰하고 명령이 어떻게 작동할지 이해합니다. 마지막으로, 일반적으로 변경 사항을 만드는 명령에 dry-run을 적용하여 시스템을 변경하지 않고도 의도된 작업을 확인할 수 있습니다.
간단한 docker-compose.yaml 파일 준비
이 단계에서는 간단한 docker-compose.yaml 파일을 준비합니다. 이 파일은 Docker Compose 의 dry-run 기능을 시연하는 데 사용할 수 있는 기본 서비스를 정의합니다.
먼저 Docker Compose 를 설치해야 합니다. 이 환경에는 미리 설치되어 있지 않으므로 바이너리를 다운로드하여 실행 가능하게 만듭니다.
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
이 명령은 시스템 아키텍처에 맞는 Docker Compose 바이너리를 다운로드하여 /usr/local/bin/docker-compose에 저장합니다. chmod +x 명령은 파일을 실행 가능하게 만듭니다.
이제 Docker Compose 가 올바르게 설치되었는지 버전을 확인하여 확인해 보겠습니다.
docker-compose version
설치된 Docker Compose 버전을 나타내는 출력을 볼 수 있습니다.
다음으로, 프로젝트 디렉토리를 만들고 해당 디렉토리로 이동합니다.
mkdir ~/project/my-compose-app
cd ~/project/my-compose-app
이제 ~/project/my-compose-app 디렉토리에 있으며, 여기에 docker-compose.yaml 파일을 생성합니다.
이제 nano 편집기를 사용하여 docker-compose.yaml 파일을 만들어 보겠습니다.
nano docker-compose.yaml
nano 편집기 내에서 다음 내용을 붙여넣습니다.
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
이 docker-compose.yaml 파일은 web이라는 단일 서비스를 정의합니다. 이 서비스는 nginx:latest Docker 이미지를 사용하고 호스트의 포트 80 을 컨테이너의 포트 80 에 매핑합니다.
Ctrl + O를 누른 다음 Enter를 눌러 파일을 저장하고, Ctrl + X를 눌러 편집기를 종료합니다.
이제 간단한 docker-compose.yaml 파일을 성공적으로 만들었습니다.
기본 compose 명령과 함께 dry-run 사용
이 단계에서는 기본 Docker Compose 명령과 함께 dry-run 플래그를 사용하여 작동 방식을 확인합니다. dry-run 플래그를 사용하면 실제로 수행하지 않고도 Docker Compose 가 어떤 작업을 수행할지 확인할 수 있습니다. 이는 명령을 실행하기 전에 잠재적인 영향을 이해하는 데 유용합니다.
docker-compose config 명령을 dry-run 플래그와 함께 사용합니다. config 명령은 Compose 파일 구성을 검증하고 표시합니다. config는 이미 비파괴적인 명령이므로 이 명령에 dry-run을 추가해도 동작이 크게 변경되지 않지만, 플래그의 구문을 이해하는 데 좋은 시작점입니다.
먼저, docker-compose.yaml 파일이 포함된 디렉토리에 있는지 확인합니다.
cd ~/project/my-compose-app
이제 docker-compose config --dry-run 명령을 실행합니다.
docker-compose config --dry-run
콘솔에 docker-compose.yaml 파일의 구문 분석된 구성이 출력되는 것을 볼 수 있습니다. 이 경우 config는 본질적으로 dry-run 작업이므로 이 출력은 dry-run 플래그 없이 docker-compose config를 실행하는 것과 동일합니다.
출력은 Docker Compose 가 docker-compose.yaml 파일을 성공적으로 구문 분석하고 내부에 정의된 서비스 및 구성을 이해했음을 확인합니다.
dry-run 명령의 출력 결과 확인
이 단계에서는 이전 단계에서 실행한 docker-compose config --dry-run 명령의 출력을 주의 깊게 관찰합니다. 이 출력을 이해하는 것은 Docker Compose 가 docker-compose.yaml 파일을 어떻게 해석하는지 확인하는 데 중요합니다.
보았던 출력은 YAML 형식의 검증된 구성입니다. 이는 Docker Compose 가 파일에 정의된 서비스, 네트워크 및 볼륨을 어떻게 이해하는지를 나타냅니다.
간단한 docker-compose.yaml을 기반으로 출력의 주요 부분을 살펴보겠습니다.
services:
web:
build:
context: /home/labex/project/my-compose-app
container_name: my-compose-app-web-1
image: nginx:latest
ports:
- published: 80
target: 80
restart: "no"
services 섹션과 그 안에 web 서비스가 표시됩니다.
image: nginx:latest: Docker Compose 가web서비스에 사용할 이미지를 올바르게 식별했음을 확인합니다.ports:: 이 섹션은 포트 매핑을 보여줍니다.published: 80은 호스트 포트를 나타내고,target: 80은 컨테이너 포트를 나타냅니다. 이는docker-compose.yaml에서 정의한 내용과 일치합니다.container_name: my-compose-app-web-1: Docker Compose 는 프로젝트 디렉토리 이름과 서비스 이름을 기반으로 기본 컨테이너 이름을 자동으로 생성합니다.build::image를 지정했음에도 불구하고 Docker Compose 는 컨텍스트가 현재 디렉토리로 설정된build섹션을 포함합니다. 이는 내부 표현의 일부이며,image만 지정한 경우 이미지를 빌드한다는 의미는 아닙니다.restart: 'no': Docker Compose 는 지정하지 않으면 재시작 정책을no로 기본 설정합니다.
이 출력은 docker-compose up과 같은 명령을 실행할 경우 Docker Compose 가 사용할 최종 구성의 표현입니다. 변경 사항을 만드는 명령 (다음 단계에서 볼 예정) 과 함께 dry-run 플래그를 사용하면 구성뿐만 아니라 수행할 작업을 보여줍니다.
config 명령의 경우, dry-run 플래그는 주로 docker-compose.yaml 파일의 구문 및 구조를 검증하는 역할을 합니다. 구문 오류가 있는 경우 config 명령 (dry-run 사용 여부와 관계없이) 이 이를 보고합니다.
변경 사항을 발생시키는 명령과 함께 dry-run 사용
이 단계에서는 docker-compose up과 같이 일반적으로 시스템을 변경하는 Docker Compose 명령과 함께 dry-run 플래그를 사용합니다. 이를 통해 dry-run이 실제로 컨테이너나 네트워크를 생성하지 않고도 의도된 작업을 어떻게 보여주는지 확인할 수 있습니다.
dry-run 없이 docker-compose up 명령을 실행하면 지정된 이미지를 가져오고 (아직 없는 경우), 네트워크를 생성하고, docker-compose.yaml 파일을 기반으로 컨테이너를 시작합니다. dry-run 플래그를 추가하면 작업을 수행하지 않고도 수행할 단계를 확인할 수 있습니다.
먼저, 올바른 디렉토리에 있는지 확인합니다.
cd ~/project/my-compose-app
이제 docker-compose up --dry-run 명령을 실행합니다.
docker-compose up --dry-run
Docker Compose 가 수행할 작업을 나타내는 출력을 볼 수 있습니다. 간단한 docker-compose.yaml의 경우 출력은 다음과 유사할 수 있습니다.
Would create network "my-compose-app_default"
Would create service "web"
Would pull image "nginx:latest"
Would create container "my-compose-app-web-1"
이 출력은 Docker Compose 가 다음을 수행하려는 것을 명확하게 보여줍니다.
my-compose-app_default라는 기본 네트워크를 생성합니다.web이라는 서비스를 생성합니다.nginx:latest이미지를 가져옵니다 (로컬에서 아직 사용할 수 없는 경우).web서비스에 대한my-compose-app-web-1이라는 컨테이너를 생성합니다.
이러한 작업 중 어느 것도 실제로 수행되지 않음을 확인하십시오. 네트워크가 생성되지 않고, 이미지가 가져오지 않으며, 컨테이너가 시작되지 않습니다. dry-run 플래그는 Docker 환경에 대한 실제 변경을 방지합니다.
이는 다음과 같은 경우에 매우 유용합니다.
- 변경 사항 미리 보기: 복잡한 애플리케이션을 배포하기 전에
dry-run을 사용하여 Docker Compose 가 정확히 무엇을 수행할지 확인할 수 있습니다. - 문제 해결:
docker-compose up명령이 실패하는 경우dry-run을 사용하여 초기 단계를 이해하고 구성의 잠재적인 문제를 식별할 수 있습니다. - 학습: 다양한
docker-compose.yaml구성을 실험하고 시스템에 영향을 주지 않고 그 영향을 확인할 수 있습니다.
dry-run 플래그는 down, start, stop 및 rm과 같은 다른 Docker Compose 명령과 함께 사용하여 영향을 받는 리소스를 확인할 수도 있습니다.
요약
이 랩에서는 먼저 Docker Compose 를 설치한 다음 기본 Nginx 서비스 정의를 사용하여 디렉토리와 YAML 파일을 생성하여 간단한 docker-compose.yaml 파일을 준비하는 방법을 배웠습니다. 그런 다음 Docker Compose 명령과 함께 dry-run 플래그를 사용하는 방법을 살펴보았습니다.
dry-run 플래그를 사용하면 실제로 시스템을 변경하지 않고도 명령이 수행할 작업을 미리 볼 수 있음을 확인했습니다. 이는 docker-compose.yaml 파일에 대한 변경 사항을 테스트하고 실행 전에 명령의 잠재적 영향을 이해하는 데 유용한 도구입니다.



