Docker

Docker compose가 무엇일까요?

JM Lee 2023. 6. 1. 02:44
728x90
정의

 

  •  docker-compose는 docker 2개 이상의 컨테이너를 더욱 간편하게 관리하기 위해 사용되는 툴
  •  docker-compose.yml (혹은 .yaml)이라는 파일에 컨테이너에서 사용 될 이미지, 옵션 등을 작성한 후 사용하게 됨.
  • 이를 통해 docker 명령어만 사용할 때보다 여러 컨테이너를 더 간편하고 직관적으로 컨테이너를 관리할 수 있다.
  • 실행할 때 사용자가 작성한 docker-compose.yml 파일의 내용에 맞게 컨테이너를 설정하고 실행하게 되기에, docker-compose.yml 파일이 존재하지 않는 경로에서 docker compose 명령어를 실행시킬 경우 에러가 발생할 수 있다.

 

 

설치

 

sudo mkdir -p /usr/lib/docker/cli-plugins
# /usr/lib/docker 경로에 cli-plugins라는 디렉토리를 생성
# -p : 만약 상위 디렉토리가 없다면 함께 생성

sudo curl -SL https://github.com/docker/compose/releases/download/v2.11.2/docker-compose-linux-x86_64 -o /usr/lib/docker/cli-plugins/docker-compose
# github에 release 된 docker-compose 파일을 /usr/lib/docker/cli-plugins/ 경로에 다운로드
# v2.11.2는 docker-compose의 버전이며, 최신 버전은 여기서 확인 가능하다.

sudo chmod +x /usr/lib/docker/cli-plugins/docker-compose
# 다운받은 docker-compose 파일에 실행 권한을 부여

sudo docker compose version
# docker-compose가 정상적으로 설치되었는지 확인함
# Docker Compose version v2.11.2 정상적으로 설치 된 경우 버전이 출력

 

Docker Compose로 컨테이너 관리

 

1. Docker-container 삭제

sudo docker ps -a # docker에 존재하는 컨테이너 목록을 확인합니다.
# CONTAINER ID   IMAGE          COMMAND              CREATED        STATUS        PORTS                               NAMES
# 54445308314d   httpd:latest   "httpd-foreground"   23 hours ago   Up 23 hours   0.0.0.0:80->80/tcp, :::80->80/tcp   sweet_engelbart

sudo docker rm -f $container_id # 컨테이너의 실행중 여부와 관계 없이 강제로 삭제합니다.

 

2. docker-compose.yml 작성

version: '3.8' 
# docker-compose.yml에 사용될 문법 버전을 정의함

services:
  example: # 서비스 이름을 지정합니다. 서비스 이름은 컨테이너끼리 통신할 때 사용.
    container_name: example # 컨테이너 이름을 지정.
    image: 'httpd:latest' # 컨테이너를 생성할 때 사용될 이미지를 지정.
    restart: always # 컨테이너가 종료됐을 때 다시 실행.

 

3. container 실행

# docker compose 명령어는 docker-compose.yml 파일이 존재하는 자리에서 실행해야 함.

sudo docker compose up -d
# up : docker-compose.yml 파일을 읽어 정의된 서비스들을 실행.
# -d : 컨테이너를 데몬(백그라운드)으로 실행.

 

4. container 중지, 삭제

# 컨테이너 중지
sudo docker compose stop

# 이후 docker ps 명령어를 쳐보면 컨테이너 목록에 아무것도 보여지지 않음.
# 중지 상태의 컨테이너를 확인
sudo docker ps -a

# 다른 명령어로 컨테이너를 중지.
sudo docker compose down
# stop과는 다르게 컨테이너가 삭제됨
# 삭제된 컨테이너는 docker ps -a 명령어로도 확인되지 않음

'Docker' 카테고리의 다른 글

Docker container 2개 이상 띄우기  (0) 2023.06.01
Entrypoint 활용하기  (0) 2023.06.01
Dockerfile = Docker에서 이미지 빌드하기  (0) 2023.06.01
Docker Volume 간단히 이해  (0) 2023.06.01
Container Port Forwarding  (0) 2023.06.01