
도커(Docker)는 리눅스의 프로세스 격리 기술을 이용해
애플리케이션을 컨테이너(container) 라는 단위로 실행하고 관리하는 오픈 소스 플랫폼이다.
도커 컨테이너 안에는 다음과 같은 것들이 함께 들어간다.
그래서 어떤 서버에서 돌리든 항상 동일한 환경에서 실행되는 것을 보장한다.
도커는 리눅스 커널의 기능을 활용해 운영체제 수준 가상화를 구현한다.
이 덕분에 여러 개의 컨테이너가 하나의 리눅스 인스턴스(호스트) 위에서
서로 격리된 상태로 동시에 실행된다.
전통적인 VM처럼 OS 전체를 여러 개 띄울 필요가 없어서 훨씬 가볍다.
도커 프로젝트는 원래 프랑스 PaaS 기업 dotCloud 에서 내부 프로젝트로 시작했고,
2013년 3월 오픈 소스로 공개되었다.
도커를 이해할 때 가장 중요한 개념은 이미지(Image) 와 컨테이너(Container) 이다.
도커 이미지는 특정 서비스를 실행하기 위해 필요한 것들을 모두 묶어놓은 템플릿이다.
포함되는 것 예시
특징
nginx:1.25, openjdk:17-jdk)컨테이너는 이미지를 실제로 실행한 상태이다.
| 구분 | 설명 |
|---|---|
| 이미지 | 실행에 필요한 코드, 라이브러리, 설정을 모두 포함한 템플릿. 불변에 가까운 배포 단위 |
| 컨테이너 | 이미지를 실제로 실행한 결과. 호스트 OS 위에서 격리된 프로세스로 동작하는 런타임 인스턴스 |
도커는 VM을 띄우지 않고 호스트 OS의 커널을 공유한다
게스트 OS를 따로 올리지 않기 때문에
컨테이너 안에 실행에 필요한 모든 것을 포함하기 때문에
로컬, 테스트 서버, 운영 서버 환경을 통일하기 쉬워진다
도커 이미지만 준비해두면
실행 환경을 강제할 수 있어서
“개발자는 되는데 서버에서는 안 된다” 같은 상황을 줄일 수 있다
도커는 환경을 모듈식 유닛(이미지) 단위로 관리할 수 있게 해준다
장점