개요

도커(Docker)는 리눅스 컨테이너에 리눅스 어플리케이션을 더 쉽게 컨테이너로 실행하고 관리할 수 있게 해주는 오픈소스 프로젝트

✔ 컨테이너 기술을 기반으로 한 가상화 플랫폼의 일종으로써 컨테이너가 실행되는 os의 기능을 그대로 사용하면서 독립된 환경을 만들어 사용함

가상화 플랫폼

Virtual Machine vs. Docker

  • 가상머신(Virtual Machine)은 하이퍼바이저를 이용해 여러개의 운영체제를 하나의 호스트에서 생성해서 사용하는 방식
  • 가상 운영체제는 완전히 독립된 공간과 시스템 자원을 할당받아 사용하며 대표적으로 VirtualBox, VMware 등이 있음

  • 도커(Docker)는 가상화된 공간을 생성할 때 리눅스 자체 기능(리눅스 라이브러리 등)을 사용하여 프로세스 단위의 격리 환경을 만드므로 성능 손실이 없음
  • 가상머신과 달리 커널을 공유해서 사용하여 컨테이너에는 라이브러리 및 실행파일만 있으므로 배포 용량이 작음

도커의 구성요소

+full

  • Docker Client : 도커를 실행하는 주체
  • Docker Host : 도커가 띄워져있는 서버. 컨테이너와 이미지를 관리함
  • Docker daemon : 도커 엔진
  • Registry : 외부(remote) 이미지 저장소

도커 이미지와 도커 컨테이너

도커 엔진에서 사용하는 기본 단위는 이미지컨테이너

Docker File -> Docker Image : 도커 이미지를 만들때 사용하는 Docker File을 이용하여 docker build 명령어를 통해 빌드. Docker Image -> Docker Container : Docker Imagedocker run 명령어를 통해 Docker Container를 실행함

도커 이미지

  • 도커 이미지(Docker Image) 는 컨테이너를 생성할 때 필요한 요소이며, 가상 머신을 생성할 때 사용하는 iso 파일과 유사한 개념.
  • 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용되며 여러 계층으로 된 바이너리 파일로 존재함
  • 도커 이미지의 이름은 기본적으로 아래의 형태로 구성됨 [저장소 이름]/[이미지 이름]:[태그] 저장소 이름 : 이미지가 저장된 장소. 명시되지 않은 이미지는 도커 허브의 공식 이미지를 뜻함. 이미지 이름 : 해당 이미지의 이름으로 역할의 의미를 담고있어야함. 태그 : 이미지의 버전을 나타냄. 생략 시 latest로 인식.

도커 컨테이너

  • 도커 컨테이너(Docker Container) 는 도커 이미지로 생성할 수 있으며, 컨테이너가 생성되면 호스트 및 다른 컨테이너로부터 격리된 시스템 및 네트워크를 사용할 수 있는 독립된 공간이 생성됨
  • 컨테이너는 이미지를 읽기전용으로 사용하되 이미지에서 변경된 사항만 컨테이너 레이어에 저장하므로 컨테이너에서 무엇을 하든지 원래 이미지는 영향을 받지 않는다. ex) 같은 도커 이미지로 A, B 두 개의 컨테이너를 생성한 뒤 A 컨테이너를 수정해도 B 에는 영향을 주지 않는다.

참고


Next: (Docker) 2. Docker 설치


의문점

  • Q1: 도커는 리눅스의 라이브러리 등 자원을 공유하는 리눅스 기반의 어플리케이션이라는데, 윈도우 기반의 Docker Desktop은 어떻게 작동하는 것인가?
  • A1: Windows 에서 작동하는 Docker Desktop은 Windows의 WSL2를 이용하거나 Hyper-V 기반 리눅스를 베이스로함

docker도커DevOps