WEEK 8-1: Docker

ensalada.de.pollo·2025년 6월 1일

be

목록 보기
43/44

Docker

Docker는 어플리케이션을 쉽고 빠르게 만들고, 테스트하며, 배포할 수 있는 소프트웨어 플랫폼입니다. 컨테이너라는 개념으로 가볍고 이식성 높은 패키지로 어플리케이션을 실행시킬 수 있습니다.

Image

docker의 image는 실행에 필요한 모든 것들(코드, 라이브러리 등)을 포함합니다. 컨테이너는 image를 실제로 실행시킨 인스턴스이고, 격리된 환경에서 작동합니다.

특징

  • 컨테이너화: 어플리케이션과 필요한 모든 것들을 하나의 패키지로 묶어서 어디서든 실행 가능하게 합니다.
  • 경량성: 운영체제 커널을 공유해 가상머신보다 훨씬 가볍고 빠릅니다.
  • 이식성: 개발, 테스트, 운영 환경이 달라도 동일하게 실행됩니다.
  • 확장성: 여러 컨테이너를 효율적으로 관리하고 쉽게 확장 가능합니다.
  • 격리성: 컨테이너마다 독립된 환경을 제공하며 보안과 안정성을 확보합니다.

네트워크

  • Bridge Network: 기본 네트워크입니다. 같은 브리지 네트워크에 연결된 컨테이너끼리 통신이 가능합니다. 단일 호스트에서 여러 컨테이너 연결에 사용합니다.
  • Host Network: 컨테이너가 호스트의 네트워크를 직접 사용합니다. 네트워크의 격리가 없지만 성능이 뛰어납니다.
  • Overlay Network: 여러 Docker 호스트에 걸쳐 있는 컨테이너 연결에 사용합니다.

Docker vs. VM

특징DockerVM
실행 속도빠름느림
리소스 사용가벼움, 오버헤드가 작음무거움, 오버헤드가 큼
이식성어디서나 동일하게 실행환경마다 다름
격리 수준낮음높음
OS 다양성linux에서 최적화다양한 OS 실행 가능
보안커널 공유로 인해 보안에 약함OS 단위 격리라 보안에 강함

어디서 사용하는 것이 좋은가?

  • 일관된 개발 환경이 필요한 경우
  • 빠른 배포와 확장이 필요한 경우
  • 마이크로서비스 아키텍처가 필요한 경우
  • CI/CD 파이프라인 구축이 필요한 경우
  • 리소스 효율화가 필요한 경우
  • 어플리케이션 격리가 필요한 경우

주요 명령어

  • 이미지 빌드: docker build -t myapp:latest .
  • 이미지 가져오기: docker pull myapp
  • 컨테이너 실행: docker run -d -p 8080:80 myapp:latest
  • 컨테이너 내부 접속: docker exec -it container_name /bin/bash

Docker Compose

여러 컨테이너를 한 번에 관리할 수 있는 도구입니다.
docker-compose.yml파일에 여러 서비스, 네트워크, 볼륨 설정을 정의합니다.
docker compose up -d 명령어로 모든 서비스를 일괄 실행하거나 일괄 중지할 수 있습니다.

0개의 댓글