Docker Compose

Human Being·2022년 6월 21일
0

Docker

목록 보기
8/8
post-thumbnail

Docker compose를 이용하면
여러 개의 container를 run하는데 적어둔 명령어를
하나의 파일로 정리하고 이를 바탕으로 실행하게 해준다

설치

docker Desktop 앱을 설치한다면 이미 설치됐다

그런데 새로 배포할 리눅스 보드에 해야해서
cli로 진행한다면

인텔 기반 장치일 경우...
공식 방법 : https://docs.docker.com/compose/install/compose-plugin/#installing-compose-on-linux-systems

ARM 기반의 장치일 경우...
여기서 안정화된 최신 docker-compose 버전을 찾고
https://github.com/linuxserver/docker-docker-compose/releases/

cd /usr/bin
wget https://github.com/linuxserver/docker-docker-compose/releases/download/1.29.2-ls51/docker-compose-arm64

# docker-compose 이름으로 명명
mv docker-compose-arm64 docker-compose

# 실행 권한 부여
chmod +x docker-compose

# 심볼릭 링크 설정
# /usr/bin/docker-compose를 삭제하면 자동적으로 심볼릭 링크도 삭제됨
ln -s /usr/bin/docker-compose /usr/local/bin

# 설치 확인
docker-compose --version

docker-compose 다루기

아래와 같은 파일 구조에서
node는 3초마다 메세지를 출력하고
python은 2초마다 메세지를 출력하는데

node, python 각각에 대해서 run 명령어를 쓰지 않고
docker-compose.yml 파일을 작성하여 다룰 것이다

준비

디렉토리

➜  compose-test tree .     
.
├── docker-compose.yml
├── node
│   ├── Dockerfile
│   └── main.js
└── py
    ├── Dockerfile
    └── main.py

node/main.js

setInterval(
	()=>{console.log("node : ticktock...")},
	3000
)

node/Dockerfile

FROM node
COPY . . 
CMD ["node", "main.js"]

py/main.py

import time
import logging

logging.basicConfig(level=logging.INFO)

while True:
    time.sleep(2)
    logging.info("python: ticktock...")

py/Dockerfile

FROM python
COPY . .
CMD ["python3", "main.py"]

docker-compose.yml

  • py 폴더 기반으로 build된 container 이름은 python-test
  • node 폴더 기반으로 build된 container 이름은 node-test
version: "3"

services:
  python-test:
    build: py
  node-test:
    build: node

실습

docker-compose.yml이 있는 곳에서 docker-compose up을 하면
각 image에서 출력되는 log가 나온다

--detach 옵션을 통해
log 없이 background에서 작동하도록 할 수 있다
docker-compose up -d

docker-compose log 살펴보기

  • background에서 작동될 때 log를 보고 싶다면
    docker-compose logs

  • log 출력되는 흐름대로 보고 싶다면
    docker-compose logs -f

  • 마지막 log에서 100개의 줄만 보고 싶다면
    docker-compose logs --tail 100

  • 한 container의 log만 보고 싶다면
    docker-compose logs {container 이름}

  • 각 로그의 출력 시간도 함께 보고 싶다면
    docker-compose logs -t
    (ISO 형식으로 출력된다)

그 외 명령어들

  • 새로 추가한 코드가 Using Cache로 인하여 build 시 포함되지 않았을 때
    docker-compose up --build --force-recreate

  • 특정 container에 들어가고 싶다면
    docker-compose exec {container 이름}

  • 특정 container를 껐다가 켜고 싶다면
    docker-compose restrat {container 이름}

  • 각 컨테이너 상태를 살펴보고 싶다면
    (IMAGE 앞단에 docker-compose.yml이 위치한 폴더 이름과 같은 것만 보면 된다)
    docker ps -a

  • 각 컨테이너 별 프로세스의 상태를 살펴보고 싶다면
    docker-compose top

  • compose를 종료하고 싶을 때
    Ctrl+C 강제종료 연타 or

    docker-compose down


공식 : https://docs.docker.com/compose/

0개의 댓글