본문 바로가기
OS & Network

Docker(2) Docker-compose 란 (기본 명령어 & docker-compose.yml)

by 새발개발JA 2021. 8. 22.
반응형

 

실무에서는 도커를 사용하여 애플리케이션을 개발한다. 처음 접해보는 스택이지만 한 걸음 한 걸음 배워나가보자.

도커를 사용하는 이유는 개발할 때 누구나 동일한 환경 구성을 할 수 있다는 점이다.

사용자마다 서버마다 환경이 다르기 때문에 도커로 같은 실행 환경으로 만들 수 있다.

 


docker-compose 란 

보통은 여러 애플리케이션이 서로 의존성 있게 구성되어 시스템이 이뤄져 있다.

그래서 하나의 컨테이너가 하나의 애플리케이션을 담당하기 때문에 여러 개의 컨테이너가 필요하다. 

도커 컴포즈(Docker Compose)는 yaml 포맷으로 작성되고, 여러 컨테이너들을 한 번에 관리를 할 수있게 도와주는 역할을 한다.

 

 

docker-compose.yml

docker-compose.yml은 장황한 도커 실행 옵션을 미리 적어둔 문서이다.

프로젝트 루트에 파일을 만들고, 실행 설정을 적어준다. 그래야 터미널에서 도커 명령어를 사용하여 컨테이너를 실행하거나 죽일 수 있다.

 

- 시스템 안에서 가동하는 여러 서버들의 구성을 모아서 정의

구분 내용

 version :  버전 지정
 services :  서비스 정의
 image :  이미지 지정
 build :  Dockerfile 위치 지정
 command :  container 에서 작동하는 명령
 entrypoint :
 container 에서 작동하는 명령
 depends_on :
 서비스간 의존관계 설정
 environment :
 컨테이너 안 환경변수 설정
 container_name :
 컨테이너 이름 설정
 volumes :
 컨테이너에 볼륨 Mount
 volumes_from :
 다른 컨테이너로부터 모든 볼륨 마운트
 links :
 다른 컨테이너와 연결
 ports :
 Host 에 컨테이너가 공개하는 포트지정
 expose :
 컨테이너끼리 공개하는 포트 지정

 

docker-compose 기본명령어

  • docker-compose up []

컨테이너를 생성 및 실행한다.

docker-compose up [옵션] [서비스명]

 

옵션 설명
-d 백그라운드 실행
--no-deps 링크 서비스 실행하지 않음
--build 이미지 빌드
-t 타임아웃을 지정(기본 10초)

 

  • docker-compose ps

현재 동작중인 컨테이너들의 상태를 확인할 수 있다.

docker-compose ps

 

  • docker-compose logs

컨테이너들의 로그를 출력 한다.

docker-compose logs

 

  • docker-compose run

docker-compose up 명령어를 이용해 생성 및 실행된 컨테이너에서 임의의 명령을 실행하기 위해 사용한다.

컨테이너들을 모두 삭제할 경우 docker-compose start가 아닌, docker-compose up으로 다시 컨테이너들을 생성 해주어야 한다.

docker-compose run

 

만약 특정 서비스에서 /bin/bash 를 실행시켜 쉘 환경으로 진입하고 싶다면 아래와 같은 명령어를 이용하면 된다.

참고로 서비스명과 컨테이너명은 다르다. (서비스명은 docker-compose.yml의 services: 다음으로 작성된 이름을 넣는다.)

# docker-compose run [서비스명] [명령]
docker-compose run redis /bin/bash

 

  • docker-compose (start / stop / pause / unpause / restart)

여러개의 서비스 또는 특정 서비스를 시작 / 정지 / 일시정지 / 재시작을 할 수 있다.

각각의 설정 뒤에 서비스명을 붙이면 특정 서비스만 제어할 수 있다. (ex. docker-compose restart [서비스명])

# 서비스 시작
docker-compose start

# 서비스 정지
docker-compose stop

# 서비스 일시 정지
docker-compose pause

# 서비스 일시 정지 해제
docker-compose unpause

# 서비스 재시작
docker-compose restart

 

  • docker-compose rm

docker-compose로 생성한 컨테이너들을 일괄 삭제한다. (삭제 전, 관련 컨테이너들을 종료 시켜두어야 한다.)

docker-compose rm

 

  • docker-compose kill

실행중인 컨테이너를 강제로 정지시킨다. kill 뒤에는 서비스를 지정하여 특정 서비스만 kill할 수 있다.

-s옵션을 사용하여 시그널을 지정해줄 수 있는데, 아래 코드에서는 SIGINT를 사용 하였다.

-s 옵션을 사용하지 않고 docker-compose kill만 사용할 경우 SIGKILL 이 전송된다.

# docker-compose kill [옵션]
docker-compose kill -s SIGINT

 

  • docker-compose down

네트워크 정보, 볼륨, 컨테이너들을 일괄 정지 및 삭제 처리 한다.

(만약 docker-compose down --rmi all 명령을 사용한다면 모든 이미지까지 삭제 한다.)

docker-compose down

 

 

  • docker-compose port

서비스 프라이빗 포트 번호의 설정을 확인할 수 있다.

# docker-compose port [서비스명] [프라이빗 포트 번호]
docker-compose port nginx 80

 

  • docker-compose config

docker-compose 구성 파일의 내용을 확인할 수 있다. docker-compose.yml의 내용을 출력 해주므로 많이 쓸일은 없다.

docker-compose config

 

 

 

 

 

 포스팅을 마치며 

도커는 컨테이너 기반으로 실행된다. 그 컨테이너 개념을 쉽게 설명할 때는 배에 실은 실제 컨테이너에 비유한다.

이번에 협찬받게 된 도커 컨테이너 각티슈 케이스는 도커에 진심인 인카토스가 만든 소장용 도커 컨테이너 제품이다 :)



도커 컨테이너 각티슈에 대해 궁금하시다면 아래 포스팅을 클릭해주세요 ↓↓↓ 

 

Docker - 도커 컨테이너 각티슈 케이스 리뷰

오늘 포스팅할 친구는 도커를 사랑하는 개발자라면 지나칠 수 없는 도커 컨테이너 각티슈 케이스를 소개해보려고 한다 :) 도커는 컨테이너 기반으로 실행된다. 그 컨테이너 개념을 쉽게 설명할

devbirdfeet.tistory.com

 

 

 

 

 

 

 

ref : 

 

[Docker CE] docker-compose 기본 명령어 정리

리눅스에서 docker-compose 명령어를 사용하려면 docker와는 별개로 docker-compose가 설치되어 있어야 합니다. (설치 방법 : https://nirsa.tistory.com/76?category=868315) 버전 확인 docker-compose --version..

nirsa.tistory.com

 

 

도커(Docker) 컴포즈를 활용하여 완벽한 개발 환경 구성하기

개발 환경을 구축하기란 그리 쉬운 일이 아닙니다. 문서화를 해두어도 누군가 계속 신경쓰지 않으면 내용이 낡기 마련이고, 계속 신경 쓰자니 이 또한 쉽지 않죠. 어떻게 하면 손쉽게 개발 환경

www.44bits.io

 

 

 

반응형

'OS & Network' 카테고리의 다른 글

MQ (Message Queue) 란  (0) 2021.09.16
SSH 란  (0) 2021.08.23
Docker(1) Docker(도커) 란  (0) 2021.08.18
Window - 윈도우10 화면 녹화 하기  (0) 2021.07.17
Network - VPN 이란?  (0) 2021.07.15

댓글