[Docker] compose 기본 사용법

Docker 컨테이너가 많아지고 각각의 컨테이너별 실행 옵션들을 모두 관리할 수 없기 때문에 YAML 파일을 사용하여 다중 컨테이너를 관리합니다. 컨테이너 실행 관리뿐만 아니라 개발 및 테스트 등 여러 환경에서의 작업을 구성할 수 있습니다.

 

docker compose 설치

docker를 설치해도 docker compose는 같이 설치되지 않기 때문에 docker compose를 설치합니다.

# apt install docker-compose

설치 완료 확인

# docker-compose --version
docker-compose version 1.29.2, build unknown

 

docker-compose.yml 파일 생성

docker compose 명령어로 컨테이너 실행 시 docker-compose.yml 파일 이름을 기본으로 실행합니다. 옵션으로 다른 이름의 YAML 파일을 지정하여 사용할 수도 있지만 기본 이름을 많이 사용합니다.

간단히 httpd 컨테이너 이미지를 사용하여 docker-compose.yml 파일을 작성해보겠습니다.

# vi docker-compose.yml
services:
  httpd1:
    image: httpd:latest
    container_name: my-web-server1
    ports:
      - "8080:80"

가장 먼저 최상위에 services를 선언한 이후에 서비스 관련 내용을 작성해줍니다.
httpd1 이름의 서비스를 생성해주고 컨테이너 관련 설정을 넣어줍니다.
간단히 httpd:latest 이미지를 사용해서 my-web-server1 이름의 컨테이너를 생성하고 외부에서 8080번 포트로 접속 시 80번 포트로 포트포워딩하도록 설정하였습니다.

 

docker-compose 실행 및 종료

docker-compose.yml 파일을 생성한 위치에서 up 명령어로 컨테이너를 실행합니다.

  • -d 옵션은 백그라운드에서 실행하는 옵션입니다.
# docker-compose up -d
Creating network "webserver_default" with the default driver
Creating my-web-server1 ... done

 

docker-compose.yml 파일에 정의한 내용으로 컨테이너가 실행되었는지 확인합니다.

# docker ps
CONTAINER ID   IMAGE          COMMAND              CREATED         STATUS         PORTS                                   NAMES
841d5eb7fee8   httpd:latest   "httpd-foreground"   3 minutes ago   Up 3 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp   my-web-server1

컨테이너 실행 후 8080번 포트로 접속 시 웹 접속을 확인하실 수 있습니다.

 

stop 명령어로 컨테이너를 종료합니다

# docker-compose stop
Stopping my-web-server1 ... done
# docker ps -a
CONTAINER ID   IMAGE          COMMAND              CREATED      STATUS                     PORTS     NAMES
841d5eb7fee8   httpd:latest   "httpd-foreground"   2 days ago   Exited (0) 2 minutes ago             my-web-server1

 

down 명령어를 사용 시에는 컨테이너를 종료할 뿐만 아니라 제거합니다.

# docker-compose down
Stopping my-web-server1 ... done
Removing my-web-server1 ... done
Removing network webserver_default
# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

 

docker-compose.yml 파일이나 기타 설정을 변경한 후 컨테이너를 재시작하는 것만으로 적용이 안되는 경우가 있어 설정 변경 후에는 downup 을 같이 진행하는 것이 좋습니다.

# docker-compose down && docker-compose up -d
Stopping my-web-server1 ... done
Removing my-web-server1 ... done
Removing network webserver_default
Creating network "webserver_default" with the default driver
Creating my-web-server1 ... done

 

간단히 docker-compose.yml 파일을 작성해보고 실행하는 것을 알아보았습니다.

'Docker' 카테고리의 다른 글

[Docker] Volumes 설정  (0) 2022.10.11
[Docker] Restart 설정  (0) 2022.09.20
[Docker] Container name 설정  (0) 2022.09.19
[Docker] 기본 명령어  (0) 2022.09.15
[Docker] 간단 설치 방법  (0) 2022.09.07

+ Recent posts