Why to use
여러 컨테이너를 하나의 yaml 파일로 관리하기 위해. (IaS)
When to use?
- 여러 container 를 하나의 그룹(서비스)으로 실행
- 로컬호스트 및 개발 단계
보통 Production 으론 쓰지 않는다. Localhost 범위 내에서만 동작하기 때문
여러 host 에서 컨테이너 운영이 필요하면 kubernetees 를 쓰는게 맞다.
특징
- Dockerfile 을 대체하지 않는다.
- image, container 를 대체하지 않는다.
- 자동으로 network bridge 를 생성해준다.
=> DNS resolution 을 기본 제공한다.
=> service name 으로 hostname 을 사용할 수 있다.
How to install?
Windows, Mac => Docker Desktop
도커 데스크탑 실행시 자동으로 docker-compose 가 설치되기 때문에 별도의 설치과정이 없다. (원스탑)
Ubuntu => Docker Engine => Docker compose
Ubuntu 는 엔진과 compose 를 모두 설치해야한다.
docker-compose.yaml
Dockerfile 이 원하는 형식이 이미지를 생성하는 configuration 파일이라면
docker-compose 는 원하는 이미지로부터 각각의 container 를 하나의 서비스로 묶어 실행시키기 위한 설정파일이다.
아래의 예제는 같은 총 3개의 서비스 (MongoDB, Nodejs, React) 를 띄우는 예시다.
자동 생성된 `docker-practice_default` 브릿지 네트워크를 통해 3개의 컨테이너가 서로 서비스명 (혹은 컨테이너명) 으로 컨테이너간 통신이 가능하다.
명령어
Docker Desktop 이나 IDE 를 통해 실행하는 것도 가능하지만
CLI 기본 명령어를 아라보자.
$ docker-compose [command] [OPTIONS] [service-name]
Options flag | Description |
-f || --file | 파일명 (default : docker-compose.yml) |
-p || --project-name | 프로젝트명 (default: 디렉토리명) |
Command | Description |
up | 컨테이너 생성 및 실행 |
start | 서비스 스타트 (여러 컨테이너 동시 실행) |
create | Create services |
pause | Pause services |
stop | Stop services |
자주 쓰는 명령어 3선
🔗 Reference
'기타 > Docker' 카테고리의 다른 글
[Docker] volume with CLI (0) | 2022.05.19 |
---|---|
[Docker] volume 사용팁 (0) | 2022.05.18 |
Docker 개념 (0) | 2021.12.18 |
[Docker] 주요 명령어 (0) | 2020.11.30 |
Docker? (0) | 2020.01.02 |