정의
- 애플리케이션을 신속하게 구축, 테스트, 배포할 수 있는 소프트웨어 플랫폼
- 컨테이너라는 표준화된 유닛으로 소프트웨어를 패키징
- 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어 실행에 필요한 모든 것을 포함
- Docker 사용시 환경에 구애받지 않고 애플리케이션을 신속하게 배포/확장하고 코드가 문제없이 실행됨을 보장
사용하는 이유
- Docker는 DevOps 및 개발자에게 도움되도록 설계된 개방형 애플리케이션 개발 프레임워크
- 개발자
- Docker를 사용하여 경량의 휴대 가능한 자립형 컨테이너로 애플리케이션을 쉽게 빌드/패키징/배송/실행
- 운영체제/배포 시스템 등을 걱정하지 않고 애플리케이션 코드에만 집중하면서 사용 가능
- 오픈소스 컨테이너 애플리케이션 활용 가능
- DevOps
- 지속적인 통합(CI) 및 개발 도구 체인에 적합
- 애플리케이션 배포/관리를 위한 시스템 아키텍처 내에서 필요한 제약/복잡성을 줄임
- 애플리케이션이 실행되는 환경설정 등을 생략할 수 있음 - Kubernetes와 같은 서비스를 통해 프로덕션에서 컨테이너화된 애플리케이션을 이동/실행 가능
Kubernetes
- Docker 컨테이너 및 워크로드를 실행할 수 있는 오픈소스 오케스트레이션 시스템
- 수백 개의 컨테이너 조정/확장/관리/예약
- 여러 서버에 배포된 여러 컨테이너를 확장하기 위해 이동할 때 운영 복잡성 관리에 도움이 됨
- 수요에 따라 빠르게 리소스 확장/축소
- 컨테이너 상태를 지속적으로 프로비저닝/예약/삭제/모니터링
Docker 기본 사항
- 핵심 개념은 2가지
- 이미지
- 컨테이너 - Docker 이미지
- 소프트웨어를 실행하는 데 필요한 모든 것을 포함
- 코드
- 런타임(JVM)
- 드라이버
- 도구
- 스크립트
- 라이브러리
- 배포
- Docker 컨테이너
- 실행 중인 Docker 이미지 인스턴스

격리와 가상화
- Docker 컨테이너의 특징 (namespace / cgroup)
- 저수준 컨테이너 런타임 (Low-level Container Runtime)
- namespace
- 자체 파일 시스템
- 자체 네트워크 스택
- 자체 프로세스 공간
- cgroup
- 컨테이너가 사용하는 CPU/메모리 등 리소스 사용량을 제한
- 격리
- 가상화와 달리 Host OS의 리소스를 분리
- Host OS 위에 Guest OS를 제공
유니온 파일 시스템

- 하나의 이미지에서 하나 이상의 컨테이너를 실행
- 컨테이너는 Read-only인 이미지에 대해 Read-Write인 변경사항을 따로 저장
Docker Registry
- 수천 개의 Docker 이미지를 관리하는 것은 어려움
- Docker Registry는 Docker 이미지를 저장/배포하는 표준 방법
- 또한 리포지토리에 저장된 이미지의 액세스 제어/보안 개선
궁금했던 점
Container에 OS이미지가 추가되면 VM과 다른 게 있을까?
- Docker Container는 리눅스 위에서만 동작한다고 함
- Container에는 경량화 리눅스(Alpine)가 들어감
- 이 때 커널은 포함되지 않고, Host OS와 다른 부분만 Container에 들어감
https://aws.amazon.com/ko/docker/
Docker란 무엇입니까? | AWS
Q: Docker로 어떤 작업을 할 수 있습니까? Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행될 것임을 확신할 수 있습니다. 이는 Doc
aws.amazon.com
https://www.oracle.com/kr/cloud-native/container-registry/what-is-docker/
https://www.samsungsds.com/kr/insights/docker.html
흔들리는 도커[Docker]의 위상 - OCI와 CRI 중심으로 재편되는 컨테이너 생태계
흔들리는 도커[Docker]의 위상 - OCI와 CRI 중심으로 재편되는 컨테이너 생태계
www.samsungsds.com
https://www.joinc.co.kr/w/man/12/docker/InfrastructureForDocker/storage
Docker Storage
블럭 디바이스 기반의 원격 스토리지 구성
www.joinc.co.kr
https://mosei.tistory.com/entry/Docker-Container%EC%9D%98-OS-vs-VM%EC%9D%98-OS?category=1144912
[Docker] Container의 OS vs VM의 OS
docker를 사용하다가 생긴 의문. - Container 에서도 Guest OS를 사용하는데? docker는 VM을 사용할 때 생기는 쓸데없는 자원낭비(OS의 오버헤드) 를 줄이는데 획기적이다. docker를 쓰는 가장 큰 이유이다. do
mosei.tistory.com
Docker 소개
Docker란 무엇인가? 개념 잡기 Docker는 Linux 기반의 Container RunTime 오픈소스이다. 처음 개념을 잡기가 조금 어려운데, Virtual Machine과 상당히 유사한 기능을 가지면서, Virtual Machine보다 훨씬 가벼운..
bcho.tistory.com
'데이터 엔지니어링 > Docker' 카테고리의 다른 글
[Docker] Container의 Lightweight (컨테이너가 가벼운 이유) (0) | 2022.07.14 |
---|---|
[Docker] Docker Daemon (dockerd) (0) | 2022.07.14 |
[Docker] Docker 정리 (정의/아키텍쳐) (0) | 2022.07.12 |
[Docker] 윈도우 docker 설치 (0) | 2022.06.16 |
[Docker] 명령어 모음 (0) | 2022.05.13 |