도커:compose
둘러보기로 이동
검색으로 이동
개요[편집 | 원본 편집]
여러 컨테이너를 한번에 쌓아올려 이들을 한번에 관리할 때.
의존관계에 있는 컨테이너들을 관리할 때 사용한다.
설치[편집 | 원본 편집]
과정 | 설명 | 방법 |
---|---|---|
버전 확인 | 최신 버전을 다음 링크에서 확인하자. | https://github.com/docker/compose/releases |
설치 | 위에서 얻은 버전을 우측의 명령에 적용하여 설치한다. |
sudo curl -L "https://github.com/docker/compose/releases/download/설치버전/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
권한 설정 |
sudo chmod +x /usr/local/bin/docker-compose | |
확인 | docker-compose -v |
기초사용[편집 | 원본 편집]
기본적으로 해당 파일이 있는 곳에서 실행한다. 다른 곳에 있다면 -f 옵션으로 파일경로를 지정한다.
의도 | 설명 | 방법 | ||||||
---|---|---|---|---|---|---|---|---|
이미지 만들기 | docker-compose build | |||||||
컨테이너 생성, 실행 |
|
docker-compose up -d | ||||||
컨테이너 정지 | 컨테이너 일시정지. | docker-compose stop | ||||||
컨테이너 시작 | docker-compose start | |||||||
컨테이너 재시작 | docker-compose restart | |||||||
컨테이너 다운 | compose파일과 관련 있는 컨테이너를 정지, 삭제시킨다. | docker-compose down |
기본내용[편집 | 원본 편집]
다음과 같은 형태로 크게 서비스, 네트워크, 볼륨을 정의한다.
version: '3' # Compose정의파일의 버전. 소수점 안쓰면 최신버전.
services:
서비스명:
image: 이미지:태그 # 태그 안쓰면 latist
buils: Dockerfile경로 # 안써도 됨. 상대경로 지정 가능. (./디렉토리)
서비스명2:
image: mariadb
restart: always
environment:
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
volumes:
esdata:
driver: local
yml 확장자의 파일로 쓰이는데, 들여쓰기로 계층구조를 나타낸다.
서비스[편집 | 원본 편집]
다음과 같은 형태로 계층화 하여 작성한다.
services:
서비스명:
image: 이미지:태그
요소 | 설명 | 방법 |
---|---|---|
이미지 지정 | (필수)
이미지를 지정한다. 태그를 안쓰면 latist. |
image: 이미지:태그
|
컨테이너 이름 지정 | compose 파일로 실행하면 이름을 자동으로 생성하는데, 이게 불편할 때 사용. | container_name: 컨테이너명
|
도커파일 지정 | 도커파일의 경로를 지정한다.
|
build: . # 현재경로
build:
context: ./하위디렉터리
dockerfile: 파일명
|
포트열기 | 컨테이너가 공개하는 포트를 지정한다.
여러개를 열 수 있다. |
ports:
- 호스트포트:컨테이너포트
|
컨테이너 연결 | 별명(앨리어스)를 지정할 수도 있다.
연결해두면 해당 컨테이너에서 http://서비스명 형태로 접근 가능. |
links:
- 서비스명
- 서비스명:앨리어스명
|
링크포트 열기 | 링크된 컨테이너 사이에서만 포트를 공유할 경우. | expose:
- "포트번호"
|
의존관계 지정 | 시작 순서를 제어한다.(해당 컨테이너가 이용 가능할 때까지 기다리진 않는다.) | depends_on:
- 의존하는서비스(ex.mysql)
|
환경변수 지정 | 컨테이너 안의 환경변수를 지정한다.
yes, no, true, false같은 bool연산자는 따옴표로 둘러싼다. |
environment:
변수명: 값
변수명2: 'yes'
|
환경변수 파일 지정 | 설정할 환경변수가 많거나, 보안과 관련된 경우, 파일만 따로 보관하기도 한다.
경로는 상대경로, 절대경로 둘 다 가능. |
env_file:
- ./경로1
- ./경로2
|
이외 서비스 설정[편집 | 원본 편집]
요소 | 설명 | 방법 |
---|---|---|
working_dir | 도커를 처음 시작하면 열, 컨테이너 내의 디렉터리 |
볼륨[편집 | 원본 편집]
요소 | 설명 | 방법 |
---|---|---|
볼륨 지정 | 호스트디렉토리를 컨테이너디렉토리에 덮어쓴다.
호스트디렉토리는 컨테이너가 사라져도 유지. |
services:
서비스명:
volumes:
- 호스트디렉토리/:컨테이너디렉토리
|
다른 컨테이너로부터 모든 볼륨 마운트 | services:
서비스명:
volumes_from:
- 컨테이너명
|
관련에러[편집 | 원본 편집]
에러 | 원인 | 해결법 |
---|---|---|
docker exited with code 0 | 시작 시 bash가 안 붙어서 발생 | 해당 서비스 아래에 다음 코드 추가.
stdin_open: true tty: true |