Docker | docker-compose 작성법
포스트
취소

Docker | docker-compose 작성법

서비스 정의

1
2
3
4
5
service:
    container1:
        ...
    container2:
        ...

컨테이너 하위 요소

image

1
image: ubuntu:latest

사용할 이미지를 지정한다

build

1
2
3
4
build:
    context: . # 경로
    dockerfile: Dockerfile # 파일명
image: myimage:latest # (선택) 생성할 이미지명

사용할 Dockerfile을 지정한다

command

1
command: bash

컨테이너 실행시 수행할 명령어를 지정한다

container_name

1
container_name: mycontainer

docker run --name 에 대응하는 옵션

컨터이너 명을 지정한다

지정하지 않는 경우 임의의 이름이 지어짐

hostname

1
hostname: myname

docker run --hostname 에 대응하는 옵션

호스트 명을 지정한다

tty, stdin_open

1
tty: true

docker run -t-i 에 대응하는 옵션

컨테이너와 상호작용 여부를 지정한다

detach

1
detach: true

docker run -d 에 대응하는 옵션

컨테이너를 백그라운드로 실행한다

restart

1
restart: unless-stopped

docker run --restart 에 대응하는 옵션

  • no (기본값) : 다시 시작되지 않는다
  • on-failure : 0이 아닌 exitcode로 종료된 경우 컨테이너를 재시작한다
  • always : 컨테이너 중지시 항상 재시작한다
  • 수동으로 중지한 경우 docker daemon이 재시작되거나 수동으로 시작한 경우에만 재시작한다
  • unless-stopped : always와 유사하나, 수동 중지시 docer daemon 재시작시에도 시작하지 않는다

networks

1
2
3
networks:
    my-network:
        ipv4_address: 10.110.13.2

network_mode

1
network_mode: "host"

docker run --net 에 대응하는 옵션

bridge/host/none 중 선택할 수 있다

volumes

1
2
3
volumes:
    - /home/ubuntu/vol1:/vol1
    - /home/ubuntu/vol2:/vol2:ro

docker run -v 에 대응하는 옵션

호스트와 컨테이너 간 볼륨을 공유한다

<호스트 경로>:<컨테이너 경로> 형태로 지정하고 읽기 전용인 경우 뒤에 :ro 를 추가한다

working_dir

1
working_dir: /vol1

docker run -w 에 대응하는 옵션

컨테이너 시작시 경로를 지정한다

ports

1
2
ports:
    - "8080:80"

docker run -p 에 대응하는 옵션

컨테이너의 포트를 호스트에게 노출한다

tcp/udp/sctp 를 명시적으로 지정할 수 있으며 지정하지 않는다면 tcp로 해석된다

  • ex. 8080:80 : 컨테이너의 TCP 포트 80을 호스트의 포트 8080로 노출
  • ex. 8080:80/tcp : 컨테이너의 TCP 포트 80을 호스트 포트 8080 로 노출
  • ex. 8080:80/udp : 컨테이너의 UDP 포트 80을 호스트 포트 8080 로 노출

environment

1
2
3
4
5
environment:
    - PORT=1234
# 또는
environment:
    - PORT:1234

docker run -e 에 대응하는 옵션

환경 변수를 지정한다

=,: 사이에 공백이 있으면 안된다

user

1
2
user: "1000"
user: "user"

docker run -u 에 대응하는 옵션

지정한 UID 또는 사용자명으로 컨테이너를 연다

기본값은 이미지(Dockerfile의 USER)에 의해 결정되며 지정되지 않았다면 root로 실행된다

Reference

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
바로가기