일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Docker
- 클러스터
- Jenkins
- Cluster
- gradle
- SpringBoot
- login
- 간단
- 머신러닝
- 예제
- 레디스
- 자동
- vue
- EMR
- 자바
- java
- fastcampus
- 젠킨스
- config
- redash
- hive
- aws
- ec2
- 설정
- Redis
- Zeppelin
- spring
- Mac
- 로그인
- Kafka
- Today
- Total
코알못
[Docker] Docker Compose 란? 본문
이번 시간에는 Docker Compose 를 알아보도록 한다!
Docker Compose 를 이용하면 Docker 명령어를 사용할때 보다 여러 컨테이너 관리가 쉬워진다.
docker-compose.yml 이라는 파일로 어떻게 빌드할지, 여러 컨테이너들이 어떤 관계가 있는지 문서화를 할 수 있으며
실제 depends_on 을 정의하여 의존 관계를 주어 컨테이너 기동 순서를 정할 수 있다.
그러나 depends_on 의 경우 기동 순서만 정할뿐 앞 순서 컨테이너가 정상적으로 기동 됐는지는 확인하지 않는다.
이때 restart 옵션의 always 값을 지정하여 앞 순서 컨테이너가 정상적으로 기동되지 않아 컨테이너가 죽었을시 다시 기동되게 할 수 있으며 restart 옵션의 unless-stopped 값을 지정하여 서버가 죽었을시에도 다시 기동되게 할 수 있다.
그리고 scale 옵션을 통해 동일한 컨테이너를 여러개 띄우는 작업도 할 수 있다.
위와 같이 여러 컨테이너를 관리 하기 위한 기능을 가지고 있어 docker compose 를 이용하면 관리를 좀 더 쉽게 할 수 있다.
우선 명령어를 알아보자!
실행중인 프로젝트 목록 확인하는 명령어는 아래와 같다.
$ docker-compose ls
$ docker-compose ps
전체 프로젝트 목록을 확인할시에는 -a 를 붙이면 된다.
$ docker-compose ls -a
이미지를 빌드 하고 컨테이너 생성/시작 하고자 할때는 아래와 같이 입력한다.
$ docker-compose up
만약 프로젝트명을 지정하고 싶을때는 -p 백그라운드로 실행하고자 한다면 -d 를 붙이면 된다.
$ docker-compose -p [projectName] up -d
프로젝트 명칭과 네트워크 명칭은 아래와 같이 생성된다.
natwork name : [project name]_[natwork name or default]
volume name : [project name]_[volume name]
container name : [project name]-[service name]-[container no]
만약 컨테이너/네트워크를 종료 하고 제거 하고자 하면 아래와 같이 입력하면 되며
$ docker-compose down
볼륨까지 제거하고자 한다면 -v 옵션을 넣는다.
$ docker-compose down -v
한번에 컨테이너를 재기동 하고 싶다면 아래와 같이 입력한다.
$ docker-compose stop
$ docker-compose start
$ docker-compose restart
만약 특정 컨테이너만 조작하고 싶다면 아래와 같이 서비스명을 뒤에 입력한다.
web 서비스 컨테이너가 3개 떠있다면 3개 모두 stop하게 된다.
$ docker-compose stop web
컨테이너 일시정지와 재개도 docker 명령어와 같다. (서비스명을 뒤에 입력하면 해당하는 서비스만 일시정지/재개 된다.)
$ docker-compose pause
$ docker-compose unpause
이제 scale 기능을 알아보자!
만약에 동일한 컨테이너를 여러개 띄우고 싶다면 docker compose 명령어를 통해 실행중에 바로 이벤트를 줄 수 있다.
참고로 scale 기능을 이용하기 위해서는 docker-compose.yml 파일에 container_name 옵션과 ports 옵션에 로컬 포트 지정("[로컬포트]:[컨테이너포트]") 하면 동일한 이름/포트로 생성 요청이 되어 scele 기능이 동작 하지 않으니 주의해야 한다.
$ docker-compose up --scale [serviceName]=[scale 숫자] -d
만약 web 컨테이너가 4개 떠있는 상태에서 web=3 을 입력했다면 기존 컨테이너 모두 kill 되며 3개의 컨테이너가 새로 생성 된다.
확인을 위해 컨테이너의 이벤트를 보고 싶다면 아래와 같은 명령어로 확인 할 수 있다.
$ docker-compose events
프로젝트 내 로그 확인을 위해서는 아래와 같이 입력한다.
$ docker-compose logs
프로젝트 내 이미지 목록은 아래와 같이 입력한다.
$ docker-compose images
컨테이너 내 실행중인 프로세스 목록
$ docker-compose top
끝!
'ETC' 카테고리의 다른 글
[Docker] Docker 빌드를 위한 Jenkins 활용 - 도커 이미지 빌드 (0) | 2023.03.15 |
---|---|
[Docker] Docker 빌드를 위한 Jenkins 활용 - 준비 (0) | 2023.03.13 |
[Docker] 도커 이미지 경량화 전략 / 디버깅 (0) | 2022.11.27 |
[Docker] 도커 허브를 통한 이미지 관리 (0) | 2022.11.25 |
[Docker] 이미지 생성/불러오기 (0) | 2022.11.25 |