1. 도커(Docker)와 함께하는 FastAPI CRUD 구축: DOCKER 기초

data_jeong·2023년 11월 13일
0
post-thumbnail

도커(Docker)와 도커 컴포즈(Docker Compose)는 현대적인 소프트웨어 개발 및 배포에서 필수적인 도구입니다. 이들은 애플리케이션을 빠르고, 일관되게, 안전하게 배포하는 데 도움을 줍니다.

도커(Docker) 소개

도커는 애플리케이션을 컨테이너화하는 플랫폼입니다. 컨테이너는 코드, 런타임, 시스템 도구, 라이브러리 등 애플리케이션을 실행하는 데 필요한 모든 것을 포함하며, 어떠한 리눅스 및 윈도우 시스템에서도 동일한 방식으로 실행됩니다. 도커는 개발자가 애플리케이션을 빠르게 개발하고, 여러 환경에서 일관성 있는 동작을 보장하는 데 도움을 줍니다.

도커의 주요 구성 요소는 다음과 같습니다:

  • 이미지(Image): 애플리케이션과 모든 종속성을 포함하는 불변의 파일입니다.
  • 컨테이너(Container): 이미지를 실행한 인스턴스로, 격리된 환경에서 애플리케이션을 실행합니다.
  • 도커 데몬(Docker Daemon): 이미지를 관리하고 컨테이너를 실행하는 백그라운드 프로세스입니다.
  • 도커 클라이언트(Docker Client): 사용자가 도커 데몬과 상호작용하는 인터페이스입니다.

도커 컴포즈(Docker Compose) 소개

도커 컴포즈는 여러 컨테이너로 구성된 애플리케이션을 정의하고 관리하는 도구입니다. docker-compose.yml 파일을 통해 서비스, 네트워크, 볼륨 등 애플리케이션의 모든 구성 요소를 정의하고, 단일 명령어로 이러한 서비스들을 함께 빌드하고 시작할 수 있습니다. Docker Compose는 복잡한 애플리케이션을 쉽게 구성하고 관리할 수 있게 해주며, 개발, 테스팅, 스테이징, 프로덕션 환경에서의 일관성을 보장합니다.

도커 컴포즈의 주요 기능은 다음과 같습니다:

  • 다중 컨테이너 관리: 여러 컨테이너로 구성된 애플리케이션을 쉽게 관리할 수 있습니다.
  • 설정의 간소화: YAML 파일을 통해 복잡한 설정을 간소화합니다.
  • 개발 환경 표준화: 개발자 간의 환경 일관성을 보장합니다.

도커와 도커 컴포즈는 현대적인 애플리케이션 개발과 배포에서 중요한 역할을 하며, 빠르고 효율적인 개발 프로세스를 지원합니다.

Docker와 Docker Compose의 차이점

  1. Docker
    • Docker는 애플리케이션과 그 종속성을 컨테이너 내에 패키징하여 애플리케이션을 격리된 환경에서 실행할 수 있게 해주는 플랫폼입니다.
    • 주로 단일 컨테이너를 관리하는 데 사용됩니다.
    • 이미지 빌드, 컨테이너 실행 및 관리 등의 기능을 제공합니다.
  2. Docker Compose
    • Docker Compose는 여러 컨테이너로 구성된 애플리케이션을 정의하고 실행하는 도구입니다.
    • docker-compose.yml 파일을 사용하여 여러 서비스(컨테이너)를 구성하고, 이 서비스들이 함께 작동하는 방식을 정의합니다.
    • 주로 복잡한 애플리케이션의 환경 설정, 여러 컨테이너의 동시 실행 및 네트워킹을 관리하는 데 사용됩니다.

유용한 Docker 커맨드

  1. 이미지 빌드: docker build -t [이미지 이름] .
    • 현재 디렉토리의 Dockerfile을 사용하여 이미지를 빌드합니다.
  2. 이미지 목록 보기: docker images
    • 로컬 시스템에 저장된 모든 이미지를 표시합니다.
  3. 컨테이너 실행: docker run [옵션] [이미지 이름]
    • 새 컨테이너를 시작하고 애플리케이션을 실행합니다.
  4. 실행 중인 컨테이너 목록 보기: docker ps
    • 현재 실행 중인 모든 컨테이너를 표시합니다.
  5. 컨테이너 중지: docker stop [컨테이너 이름 또는 ID]
    • 실행 중인 컨테이너를 정지합니다.
  6. 컨테이너 로그 보기: docker logs [컨테이너 이름 또는 ID]
    • 특정 컨테이너의 로그를 표시합니다.
  7. 컨테이너 내부로 진입: docker exec -it [컨테이너 이름 또는 ID] /bin/bash
    • 실행 중인 컨테이너 내부에 접근하여 명령을 실행할 수 있습니다.
  8. 이미지 삭제: docker rmi [이미지 이름 또는 ID]
    • 지정된 이미지를 삭제합니다. 사용 중인 이미지는 삭제할 수 없습니다.
  9. 모든 이미지 삭제: docker rmi $(docker images -q)
    • 시스템에 있는 모든 이미지를 삭제합니다.
  10. 이미지 강제 삭제: docker rmi -f [이미지 이름 또는 ID]
    • 사용 중이거나 태그되지 않은 이미지도 강제로 삭제합니다.
  11. 모든 컨테이너 중지: docker stop $(docker ps -aq)
    • 실행 중인 모든 컨테이너를 중지합니다.
  12. 모든 컨테이너 삭제: docker rm $(docker ps -aq)
    • 모든 컨테이너를 삭제합니다. 컨테이너가 실행 중이면 삭제되지 않습니다.
  13. 실행 중인 컨테이너 강제 삭제: docker rm -f [컨테이너 이름 또는 ID]
    • 실행 중인 컨테이너를 강제로 삭제합니다.

유용한 Docker Compose 커맨드

  1. 서비스 시작: docker-compose up
    • docker-compose.yml 파일에 정의된 모든 서비스(컨테이너)를 빌드(필요한 경우)하고 시작합니다.
    • d 플래그를 추가하면 백그라운드에서 서비스가 실행됩니다.
  2. 서비스 중지: docker-compose stop
    • 모든 서비스를 중지하지만 컨테이너를 제거하지는 않습니다.
  3. 서비스 중지 및 제거: docker-compose down
    • 실행 중인 서비스를 중지하고 관련 컨테이너와 네트워크를 제거합니다.
    • v 플래그를 추가하면 관련 볼륨도 함께 제거합니다.
  4. 특정 서비스 로그 보기: docker-compose logs [서비스 이름]
    • 지정된 서비스의 로그를 표시합니다.
  5. 서비스 재시작: docker-compose restart
    • 모든 서비스를 재시작합니다.
  6. 서비스 빌드: docker-compose build
    • docker-compose.yml 파일에 정의된 서비스의 이미지를 빌드합니다.
  7. 실행 중인 서비스 목록 보기: docker-compose ps
    • 현재 실행 중인 서비스의 목록을 표시합니다.3
profile
데이터를 주력으로 하는 잡부입니다!

0개의 댓글