소개
이 랩에서는 docker-compose config 명령을 사용하여 Docker Compose 파일을 검증하고 보는 방법을 배우게 됩니다. 먼저 Docker Compose 를 설치한 다음 기본적인 compose 파일을 생성하는 것으로 시작합니다.
그런 다음 docker-compose config 명령을 사용하여 compose 파일의 구문을 검증하고, YAML 및 JSON 형식으로 해결된 구성을 보고, 서비스 이름 및 이미지 이름과 같은 특정 정보를 추출합니다. 이 랩은 Docker Compose 파일을 효과적으로 사용하는 데 필요한 필수 기술을 갖추도록 해줍니다.
기본 compose 파일 검증
이 단계에서는 기본적인 Docker Compose 파일을 검증하는 방법을 배우게 됩니다. 시작하기 전에, 이 환경에는 Docker Compose 가 미리 설치되어 있지 않으므로 Docker Compose 를 설치해야 합니다.
먼저, Docker Compose 바이너리를 다운로드해 보겠습니다. 안정적이고 널리 사용되는 버전인 버전 1.29.2 를 다운로드합니다.
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
이 명령은 공식 GitHub 저장소에서 Docker Compose 바이너리를 다운로드하여 /usr/local/bin/docker-compose에 저장합니다. $(uname -s) 및 $(uname -m) 부분은 운영 체제와 아키텍처를 자동으로 감지하여 올바른 바이너리를 다운로드합니다.
다음으로, 다운로드한 바이너리에 실행 권한을 부여해야 합니다.
sudo chmod +x /usr/local/bin/docker-compose
이 명령은 docker-compose 명령을 실행 가능하게 만듭니다.
이제 버전을 확인하여 설치를 확인해 보겠습니다.
docker-compose --version
docker-compose version 1.29.2, build 5becea4c와 유사한 출력을 볼 수 있습니다. 이는 Docker Compose 가 올바르게 설치되었음을 확인합니다.
이제 간단한 Docker Compose 파일을 만들어 보겠습니다. ~/project 디렉토리에 docker-compose.yml이라는 파일을 생성합니다.
nano ~/project/docker-compose.yml
다음 내용을 파일에 추가합니다.
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
이것은 매우 기본적인 Docker Compose 파일입니다. nginx:latest 이미지를 사용하고 호스트의 포트 80 을 컨테이너의 포트 80 에 매핑하는 web이라는 단일 서비스를 정의합니다.
파일을 저장하고 nano 편집기를 종료합니다 ( Ctrl + X, 다음 Y, 다음 Enter를 누릅니다).
compose 파일을 실행하기 전에 구문을 검증하는 것이 좋습니다. Docker Compose 는 이를 위한 config 명령을 제공합니다.
docker-compose config
docker-compose.yml 파일의 구문이 올바르면 이 명령은 해결된 구성을 YAML 형식으로 출력합니다. 구문 오류가 있는 경우 문제를 나타내는 오류 메시지를 출력합니다. 이를 통해 서비스를 빌드하거나 실행하기 전에 오류를 조기에 파악할 수 있습니다.
YAML 형식으로 해결된 구성 보기
이전 단계에서는 docker-compose config 명령을 사용하여 docker-compose.yml 파일의 구문을 검증했습니다. 기본적으로 이 명령은 해결된 구성을 YAML 형식으로 출력합니다. 이는 Docker Compose 가 사용할 최종 구성, 즉 여러 compose 파일에서 가져온 모든 기본값 또는 병합을 확인하는 데 유용합니다.
출력을 보기 위해 명령을 다시 실행해 보겠습니다. docker-compose.yml 파일을 생성한 ~/project 디렉토리에 있는지 확인하십시오.
cd ~/project
docker-compose config
다음과 유사한 출력을 볼 수 있습니다.
services:
web:
build:
context: /home/labex/project
image: nginx:latest
ports:
- published: 80
target: 80
version: "3.8"
출력에 /home/labex/project로 설정된 context가 있는 build 섹션이 포함되어 있음을 확인하십시오. docker-compose.yml 파일에 build 섹션을 명시적으로 정의하지 않았음에도 불구하고 Docker Compose 는 compose 파일이 포함된 디렉토리인 기본 빌드 컨텍스트를 추가합니다. 이는 docker-compose config가 기본값을 포함하여 해결된 구성을 표시하는 방법의 예입니다.
YAML 형식으로 해결된 구성을 보는 것은 디버깅하고 Docker Compose 가 파일을 정확히 어떻게 해석하는지 이해하는 데 도움이 됩니다.
JSON 형식으로 해결된 구성 보기
이전 단계에서 docker-compose config가 기본적으로 해결된 구성을 YAML 형식으로 출력하는 방법을 살펴보았습니다. 특히 JSON 을 처리하는 도구나 스크립트를 사용하는 경우, 구성을 JSON 형식으로 보는 것이 유용할 수 있습니다.
docker-compose config 명령에는 출력 형식을 지정할 수 있는 --format 플래그가 있습니다. JSON 형식으로 출력을 얻으려면 --format json을 사용합니다.
~/project 디렉토리에 있는지 확인하십시오.
cd ~/project
docker-compose config --format json
해결된 구성이 JSON 형식으로 콘솔에 출력되는 것을 볼 수 있습니다. 출력은 다음과 유사하게 표시됩니다 (정확한 형식은 약간 다를 수 있음).
{
"services": {
"web": {
"build": {
"context": "/home/labex/project"
},
"image": "nginx:latest",
"ports": [
{
"published": 80,
"target": 80
}
]
}
},
"version": "3.8"
}
이 출력을 이전 단계의 YAML 출력과 비교하면 동일한 구성을 다른 데이터 형식으로 나타낸다는 것을 알 수 있습니다. 두 형식 모두 필요에 따라 유용합니다.
JSON 형식으로 구성을 보는 것은 Docker Compose 를 다른 도구와 통합하거나 구성의 프로그래밍 방식 처리에 특히 유용할 수 있습니다.
서비스 이름만 출력
이 단계에서는 docker-compose config 명령을 사용하여 compose 파일에 정의된 서비스의 이름만 출력하는 방법을 배우겠습니다. 이는 전체 구성 세부 정보 없이 서비스의 빠른 목록이 필요할 때 유용할 수 있습니다.
docker-compose config 명령에는 정확히 이 작업을 수행하는 --services 플래그가 있습니다. 이 플래그는 compose 파일을 구문 분석하고 서비스 이름만 한 줄에 하나씩 출력합니다.
~/project 디렉토리에 있는지 확인하십시오.
cd ~/project
docker-compose config --services
현재 docker-compose.yml 파일에 web이라는 서비스 하나만 있으므로 이 명령의 출력은 다음과 같습니다.
web
compose 파일에 여러 서비스가 정의되어 있는 경우 각 서비스 이름이 새 줄에 출력됩니다. 예를 들어, web, db, app이라는 서비스가 있는 경우 출력은 다음과 같습니다.
web
db
app
이 플래그는 Docker Compose 프로젝트에 정의된 서비스를 빠르게 나열하는 편리한 방법입니다.
이미지 이름만 출력
이 마지막 단계에서는 docker-compose config 명령을 사용하여 compose 파일에 정의된 서비스에서 사용하는 이미지의 이름만 출력하는 방법을 배우겠습니다. 이는 프로젝트가 의존하는 이미지를 빠르게 확인하는 데 유용합니다.
docker-compose config 명령에는 이 작업을 수행하는 --images 플래그가 있습니다. 이 플래그는 compose 파일을 구문 분석하고 이미지 이름만 한 줄에 하나씩 출력합니다.
~/project 디렉토리에 있는지 확인하십시오.
cd ~/project
docker-compose config --images
docker-compose.yml 파일이 web 서비스에 대해 nginx:latest 이미지를 사용하므로 이 명령의 출력은 다음과 같습니다.
nginx:latest
다른 이미지를 사용하는 여러 서비스가 있는 경우 각 이미지 이름이 새 줄에 출력됩니다. 예를 들어, nginx:latest, mysql:5.7, python:3.9를 사용하는 서비스가 있는 경우 출력은 다음과 같습니다.
nginx:latest
mysql:5.7
python:3.9
이 플래그는 Docker Compose 프로젝트에 필요한 이미지에 대한 간략한 개요를 제공합니다.
요약
이 랩에서는 바이너리를 다운로드하고 실행 권한을 부여하여 Docker Compose 를 설치하는 방법을 배웠고, 버전을 확인하여 설치를 확인했습니다. 그런 다음 Nginx 이미지를 사용하여 간단한 웹 서비스를 정의하는 기본 docker-compose.yml 파일을 만들었습니다. 마지막으로, docker-compose config 명령을 사용하여 compose 파일의 구문을 검증하여 배포 전에 올바르게 형식이 지정되었는지 확인했습니다.



