[docker] docker와 docker-compose

HI·2024년 10월 29일

docker?

VM처럼 가상화기술을 사용하여 독립된 환경에서 애플리케이션을 실행할 수 있는 컨테이너를 생성한다.
Docker file과 Docker Image를 활용해 컨테이너를 생성할 수 있다.

docker-compose?

docker-compose을 사용하면 docker-compose.yaml 파일로 커맨드를 한번 실행하는것으로 파일에 정의한 설정들을 사용해 모든 컨테이너 서비스를 시작, 정지, 삭제 할 수 있다.
아니면 docker로 개별 실행해야 한다.

docker-compose를 이용한 설치 및 실행

1. docker-compose.yaml 파일 다운

#Milvus
$wget https://github.com/milvus-io/milvus/releases/download/v2.4.13-hotfix/milvus-standalone-docker-compose.yml -O docker-compose.yml

#Airflow
$curl -LfO -k "https://airflow.apache.org/docs/apache-airflow/2.5.1/docker-compose.yaml"

2. docker-compose.yaml 실행

$docker-compose up 
$docker-compose up -d (백그라운드로 실행 옵션)

Docker Compose 명령어는 자동으로 docker-compose.yaml 파일을 찾아서 실행한다.
그래서 기본적으로 docker-compose.yaml 이름으로 사용하는데, 서비스별로 다른 이름을 사용하고 싶다면 밑의 명령어로 사용 가능하다.

$docker-compose -f milvus-docker-compose.yaml up -d

-f 옵션과 실행하려는 yaml파일명을 붙여서 실행해주면 된다.

docker 명령어

  • docker 컨테이너 목록 확인
$docker ps -a
$docker container ls -a
  • 실행중인 docker 컨테이너 목록 확인
$docker ps
$docker container ls
  • docker 컨테이너 접속
$docker exec -it <컨테이너_ID 또는 컨테이너_이름> /bin/bash
$docker attach <컨테이너ID>

exec, attach 차이점

  • exec: 실행 중인 컨테이너에 명령어를 전달(외부 -> 내부)
  • attach: 실행 중인 컨테이너에 직접 들어가 명령어를 실행 (내부 접근)
  • docker 컨테이너 시작 및 생성
$docker run <컨테이너ID>
  • docker 컨테이너 중지
$docker stop <컨테이너ID>
  • docker 컨테이너 삭제(중지 후 삭제할 것)
$docker rm <컨테이너ID>

docker-compose 명령어

  • docker-compose 생성 및 시작
$docker-compose up 
$docker-compose up -d (백그라운드로 실행 옵션)
  • 실행 중지
$docker-compose down
  • docker-compose 실행 리스트 확인
$docker-compose ps
  • docker-compose 실행 서비스 일괄 중지
$docker-compose stop
  • docker-compose 중지된 서비스를 다시 시작
$docker-compose start  
  • docker-compose 재시작
$docker-compose restart

up, start, restart 차이점

  • up: 신규 생성 및 시작
  • start: 중지상태인 서비스를 시작
  • restart: 실행중인 서비스도 중지 후 재시작

[참고]
https://sunrise-min.tistory.com/entry/Docker-Container%EC%99%80-Image%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
https://velog.io/@jen133/Inception-docker%EC%99%80-docker-compose
https://velog.io/@agzg/docker%EB%8F%84%EC%BB%A4-%EB%AA%85%EB%A0%B9%EC%96%B4-%EB%AA%A8%EC%9D%8C

0개의 댓글