
Docker를 사용하는 이유
[Docker Compose 란?]
여러 개의 Docker 컨테이너들을 하나의 서비스로 정의하고 구성해 하나의 묶음으로 관리할 수 있게 도와주는 툴이다.
[Docker Compose를 사용하는 이유]
1. 여러 개의 컨테이너를 관리하는데 용이
여러 개의 컨테이너로 이루어진 복잡한 애플리케이션을 한번에 관리할 수 있게 해준다. 여러 컨테이너를 하나의 환경에서 실행하고 관리하는데 도움이 된다.
2. 복잡한 명령어로 실행시키던 걸 간소화 시킬 수 있음
이전에 MySQL 이미지를 컨테이너로 실행시킬 때 아래와 같은 명령어로 실행을 시켰다.
$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/.../mysql_data:/var/lib/mysql -d mysql
너무 복잡하지 않나? DockerCompose를 사용하면 위와 같이 컨테이너를 실행시킬 때마다 복잡한 명령어를 입력하지 않아도 된다. 단순히 docker compose up 명령어만 실행시키면 된다.
Docker Compose CLI 명령어
지금부터 작성할 명령어들은 compose.yml이 존재하는 디렉토리에서 실행시켜야 한다.
[compose 파일 작성]
# compose.yml
services:
webserver:
container_name: webserver
image: nginx
ports:
- 80:80
[compose.yml에서 정의한 컨테이너 실행]
$ docker compose up # 포그라운드에서 실행
$ docker compose up -d # 백그라운드에서 실행
[Docker compose로 실행시킨 컨테이너 확인하기]
# compose.yml에 정의된 컨테이너 중 실행 중인 컨테이너만 보여준다.
$ docker compose ps
# compose.yml에 정의된 모든 컨테이너를 보여준다.
$ docker compose ps -a
[Docker Compose 로그 확인하기]
# compose.yml에 정의된 모든 컨테이너의 로그를 모아서 출력한다.
$ docker compose logs
[컨테이너를 실행하기 전에 이미지 재빌드하기]
$ docker compose up --build # 포그라운드에서 실행
$ docker compose up --build -d # 백그라운드에서 실행
- compose.yml에서 정의한 이미지 파일에서 코드가 변경 됐을 경우, 이미지를 다시 빌드해서 컨테이너를 실행시켜야 코드 변경된 부분이 적용된다. 그러므로 이럴 때에는 --build 옵션을 추가해서 사용해야 한다.
참고 : docker compose up VS docker compose up --build
- docker compose up : 이미지가 없을 때만 빌드해서 컨테이너를 실행시킨다. 이미지가 이미 존재하는 경우 이미지를 빌드하지 않고 컨테이너를 실행시킨다.
- docker compose up --build : 이미지가 있건 업선 무조건 빌드를 다시해서 컨테이너를 실행시킨다.
[이미지 다운받기 / 업데이트 하기]
$ docker compose pull
- compose.yml에서 정의돈 이미지를 다운 받거나 업데이트 한다.
- 로컬 환경에 이미지가 없다면 이미지를 다운 받는다
- 로컬 환경에 이미 이미지가 있는데 Dockerhub의 이미지와 다른 이미지일 경우 이미지를 업데이트한다
[Docker Compose에서 이용한 컨테이너 종료하기]
$ docker compose down'Back-End > Docker' 카테고리의 다른 글
| Spring Boot, MySQL 컨테이너 동시에 띄워보기(feat. 오류) (0) | 2025.01.28 |
|---|---|
| Docker Compose로 Redis, SpringBoot 각각 실행시키기 (0) | 2025.01.27 |
| DOCKER RUN과 WORKDIR (0) | 2025.01.27 |
| Spring Boot 프로젝트를 Docker로 실행시키기 (0) | 2025.01.27 |
| Docker 파일(폴더) 복사/이동 (1) | 2025.01.27 |