도커:compose: 두 판 사이의 차이
둘러보기로 이동
검색으로 이동
(→서비스) |
(→서비스) |
||
(사용자 2명의 중간 판 5개는 보이지 않습니다) | |||
3번째 줄: | 3번째 줄: | ||
의존관계에 있는 컨테이너들을 관리할 때 사용한다. | 의존관계에 있는 컨테이너들을 관리할 때 사용한다. | ||
===설치=== | |||
{| class="wikitable" | |||
!과정 | |||
!설명 | |||
!방법 | |||
|- | |||
|버전 확인 | |||
|최신 버전을 다음 링크에서 확인하자. | |||
|https://github.com/docker/compose/releases | |||
|- | |||
|설치 | |||
|위에서 얻은 버전을 우측의 명령에 적용하여 설치한다. | |||
| | |||
sudo curl -L "https://github.com/docker/compose/releases/download/설치버전<nowiki/>/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose | |||
|- | |||
|권한 설정 | |||
| | |||
| | |||
sudo chmod +x /usr/local/bin/docker-compose | |||
|- | |||
|확인 | |||
| | |||
|docker-compose -v | |||
|} | |||
==기초사용== | ==기초사용== | ||
10번째 줄: | 35번째 줄: | ||
!설명 | !설명 | ||
!방법 | !방법 | ||
|- | |||
|이미지 만들기 | |||
| | |||
|docker-compose build | |||
|- | |- | ||
|컨테이너 생성, 실행 | |컨테이너 생성, 실행 | ||
19번째 줄: | 48번째 줄: | ||
| -d | | -d | ||
|백그라운드에서 실행. | |백그라운드에서 실행. | ||
|- | |||
| -f | |||
|파일 경로를 지정할 수 있다. docker-compose -f [파일경로] | |||
|} | |} | ||
|docker-compose up -d | |docker-compose up -d | ||
145번째 줄: | 177번째 줄: | ||
- ./경로2 | - ./경로2 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|} | |||
=== 이외 서비스 설정 === | |||
{| class="wikitable" | |||
!요소 | |||
!설명 | |||
!방법 | |||
|- | |||
|working_dir | |||
|도커를 처음 시작하면 열, 컨테이너 내의 디렉터리 | |||
| | |||
|} | |} | ||
154번째 줄: | 197번째 줄: | ||
|- | |- | ||
|볼륨 지정 | |볼륨 지정 | ||
| | |호스트디렉토리를 컨테이너디렉토리에 덮어쓴다. | ||
호스트디렉토리는 컨테이너가 사라져도 유지. | |||
|<syntaxhighlight lang="yaml"> | |<syntaxhighlight lang="yaml"> | ||
services: | services: | ||
171번째 줄: | 216번째 줄: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|} | |} | ||
=관련에러= | |||
{| class="wikitable" | |||
!에러 | |||
!원인 | |||
!해결법 | |||
|- | |||
|docker exited with code 0 | |||
|시작 시 bash가 안 붙어서 발생 | |||
|해당 서비스 아래에 다음 코드 추가. | |||
stdin_open: true | |||
tty: true | |||
|} | |||
[[분류:도커]] |
2022년 7월 7일 (목) 12:39 기준 최신판
개요[편집 | 원본 편집]
여러 컨테이너를 한번에 쌓아올려 이들을 한번에 관리할 때.
의존관계에 있는 컨테이너들을 관리할 때 사용한다.
설치[편집 | 원본 편집]
과정 | 설명 | 방법 |
---|---|---|
버전 확인 | 최신 버전을 다음 링크에서 확인하자. | 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 |