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 |