Docker Compose 한방에 정리

docker-compose up 한 번이면 여러 컨테이너를 동시에 띄울 수 있다. 더 이상 복잡한 docker run 명령어를 반복할 필요 없다.

포스트 상단

기본 사용법

Docker Compose는 YAML 파일 하나로 여러 컨테이너 설정을 관리한다. 먼저 docker-compose.yml 파일을 만들고, 실행할 컨테이너들을 정의한다.

version: "3.9"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
  db:
    image: postgres:13
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password

위 예시는 Nginx 웹 서버와 PostgreSQL 데이터베이스 컨테이너를 정의한다. web 서비스는 Nginx 이미지를 사용하고, 호스트의 80번 포트를 컨테이너의 80번 포트에 연결한다. 현재 디렉토리의 html 폴더를 컨테이너의 /usr/share/nginx/html에 마운트한다. db 서비스는 PostgreSQL 이미지를 사용하고, 환경 변수를 설정한다.

Compose 파일을 만들었으면, 다음 명령어로 컨테이너들을 실행한다.

docker-compose up -d # 백그라운드 실행. -d 옵션 없으면 터미널에 로그가 계속 뜬다.

컨테이너를 중지하려면 다음 명령어를 사용한다.

docker-compose down # 컨테이너, 네트워크, 볼륨 삭제

컨테이너가 실행 중인지 확인하려면 다음 명령어를 사용한다.

docker-compose ps # 실행 중인 컨테이너 목록

안 될 때

docker-compose up이 안 되면 YAML 파일 문법 오류가 흔하다. YAML은 공백에 민감하므로 들여쓰기가 틀리면 에러가 발생한다. docker-compose config 명령어로 문법을 검사한다.

docker-compose config # 문법 오류 확인

이미지 pull이 안 되는 경우, 이미지 이름이 틀렸거나 Docker Hub에 존재하지 않는 이미지일 수 있다. docker pull <이미지 이름>으로 먼저 이미지를 다운로드해본다.

포트 충돌이 발생하면, 다른 프로세스가 해당 포트를 사용 중일 가능성이 높다. netstat -tulnp (Linux) 또는 Get-Process -Id (Get-NetTCPConnection -LocalPort <포트 번호>).OwningProcess (Windows PowerShell) 명령어로 포트를 사용하는 프로세스를 확인한다.

비슷한 글 추천

Comments (0)

No comments yet. Be the first to comment!