docker-compose가 필요한 이유

기존 docker 명령만으로 수많은 옵션을 붙여 컨테이너를 올리는 방식은 번거롭고 불편할 뿐만 아니라 휴먼 에러의 가능성이 크다. 그렇기 때문에 yaml 파일로 미리 정의해두고 한꺼번에 여러 컨테이너를 올릴 수 있는 docker-compose의 사용을 고려해야 한다.

 

docker-compose로 컨테이너 올리기

1. Dockerfile을 이용하여 이미지를 생성한다.

2. docker-compose.yml에 환경을 정의한다.

version: '3'

services:
  nginx:
    image: nginx
    ports:
      - 8080:80
    volumes:
      - ./:/usr/share/nginx/html/

3. docker-compose up -d 명령어로 컨테이너로 만든다.

 

docker-compose 설치

$ curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 

$ chmod +x /usr/local/bin/docker-compose

 

$ docker-compose --version

 

docker-compose 명령어

기본적으로 up, down 제외 docker 명령어와 같다.


컨테이너 최초 실행

$ docker-compose up -d

컨테이너 중지 및 종료(stop & kill)

$ docker-compose down

작동중인 프로세스의 상태를 확인

$ docker-compose ps

이미지 가져오기

$ docker-compose pull

로그 확인

$ docker-compose logs [service_name]

docker-compose.yml에서 작성했던 services 항목을 말한다.


컨테이너 추가 생성

$ docker-compose run -d [service_name]

이런 식으로 반복하여 여러 개의 같은 서비스의 컨테이너 생성 가능


필요한 이미지를 강제로 빌드

$ docker-compose up --build

컨테이너 강제 재시작

$ docker-compose up --force-recreate

컨테이너 자원 사용량 확인

$ docker inspect [container_name]

컨테이너 자원 변경

$ docker update [resource_update] [container_name]

resource_update 예시 :  --cpuset-cpus=0-4(cpu 개수 지정)


도커 데몬에서 실행되는 명령어의 결과를 로그로 출력

$ docker events

실행 중인 모든 컨테이너의 자원 사용량을 스트림으로 출력

$ docker stats

--no-stream 옵션을 붙여 그 순간의 로그만 볼 수 있음


이미지, 컨테이너, 로컬 볼륨의 개수 및 크기 등의 정보 출력

$ docker system df

cAdvisor 사용 방법

$ sudo docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  --privileged \
  --device=/dev/kmsg \
  gcr.io/cadvisor/cadvisor:$VERSION

위 명령어 실행 후 8080포트로 접속

'IT > Docker' 카테고리의 다른 글

[Docker Swarm] docker-swarm 설치 및 기초  (0) 2021.12.15
[Docker] Container Resource Management  (0) 2021.12.14
Virtualization with Docker  (0) 2021.10.30
Docker Labs  (0) 2021.10.27

+ Recent posts