Zeno ZENO

Part 10. docker-compose.yml 구조 이해하기

Docker Compose를 사용하려면 docker-compose.yml 파일 구조를 먼저 이해해야 한다. 이번 글에서는 YAML 문법, 들여쓰기 규칙, services, image, build, command, ports 개념을 초보자도 이해할 수 있도록 설명한다.

Part 10. docker-compose.yml 구조 이해하기

1. Docker Compose를 배우기 전에

Docker Compose는 docker-compose.yml 파일을 읽어서 컨테이너를 생성한다.

따라서 Compose를 사용하려면 먼저 docker-compose.yml 파일 구조를 이해해야 한다.


2. yml 파일이란?

yml 또는 yaml은 설정 파일 형식이다.

사람이 읽기 쉽도록 만들어졌다.

예를 들어 다음과 같은 형태를 가진다.

name: zeno

age: 30

콜론(:) 왼쪽은 이름이고 오른쪽은 값이다.


3. YAML에서 가장 중요한 규칙

들여쓰기다.

YAML은 들여쓰기로 구조를 구분한다.

예시

services:
  app:
    image: ubuntu

여기서 app은 services 안에 포함된다.

image는 app 안에 포함된다.


4. 왜 중괄호를 안 쓸까?

JSON은 보통 이렇게 작성한다.

{
  "name": "zeno"
}

YAML은 더 간단하게 작성한다.

name: zeno

그래서 설정 파일에서 많이 사용된다.


5. Compose의 기본 구조

services:
  app:
    image: ubuntu

Compose는 대부분 services부터 시작한다.


6. services란?

services는 실행할 컨테이너 목록이다.

services:
  app:
  db:
  redis:

의미

app 컨테이너

db 컨테이너

redis 컨테이너

를 실행한다는 뜻이다.


7. image란?

image: ubuntu

사용할 Docker 이미지를 의미한다.

Docker Hub에서 이미 존재하는 이미지를 가져온다.


8. build란?

AD

제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다

데이톡 - 매일 100만 회원과 새로운 인연

build: .

현재 폴더의 Dockerfile을 사용해서 이미지를 생성한다.

image와 build는 많이 헷갈린다.

차이는 다음과 같다.

image

↓

이미 만들어진 이미지 사용

build

↓

Dockerfile로 직접 이미지 생성

9. command란?

command: echo "Hello Compose"

컨테이너 실행 시 실행할 명령어다.


10. ports란?

ports:
  - "8080:80"

의미

내 PC의 8080 포트

↓

컨테이너의 80 포트

를 연결한다.


11. 실제 예제

services:
  app:
    image: ubuntu
    command: echo "Hello Compose"

의미는 다음과 같다.

app 컨테이너 생성

↓

ubuntu 이미지 사용

↓

Hello Compose 실행

12. Dockerfile과 Compose 다시 비교

Dockerfile

↓

이미지 생성

반면

docker-compose.yml

↓

컨테이너 실행 및 관리

둘의 역할은 완전히 다르다.


13. Part 10 정리

YAML = 설정 파일 형식

services = 컨테이너 목록

image = 사용할 이미지

build = Dockerfile로 이미지 생성

command = 실행 명령어

ports = 포트 연결

다음 Part에서는 docker-compose.yml을 직접 작성하고 Docker Compose를 실행해본다.

AD

제휴 광고

일부 링크는 제휴 링크이며, 구매 또는 가입 시 일정 수수료를 받을 수 있습니다.

AD

'Docker' 카테고리의 다른 글

전체보기