Docker란?
리눅스 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트로,
컨테이너 기반 오픈소스 가상화 플랫폼이라고 정의할 수 있다.
Virtual Box와 Docker
1. Virtual Box
OS가 2개 존재할 수 없으므로 Hyper-v라는 가상화 기술을 이용해서 host OS(나의 경우 windows) 위에 virtual box를 통해 다른 OS가 설치되고 실행될 수 있다. Linux의 다양한 배포판 중 하나가 Ubuntu이다.
2. Docker
Container 기술로, Docker engine 위에 여러가지 container가 올라간다.
Container 역시 독립된 공간으로, docker engine의 기반은 linux이다.
Windows는 linux를 사용할 수 없지만, WSL(Windows Subsystem for Linux)이 windows에서 linux를 사용할 수 있도록 중간에 처리해준다.
3. Virtual box와 Docker
Virtual box는 그 안에 OS가 설치되는 개념이지만, container 내부에는 OS가 설치되는 개념이 아니고, 설정값이나 정보들만 담겨있으며 실제 구동은 Docker engine에서 이루어진다. 따라서 container 자체를 만드는데에는 큰 리소스가 들지 않는다. 배포를 하려면 .jar와 더불어 최소한 JRE가 있어야 이 위에서 .jar 파일이 배포될 수 있는데, 이런 식으로 내가 필요한 환경을 image로 만들어 놓을 수 있다. Image를 실행하면 컨테이너화 된다.
* cf. JVM ⊂ JRE ⊂JDK
JDK = JRE + 개발이 가능한 환경
Docker 이미지와 컨테이너
1. 이미지(image)
서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일 된 실행파일을 묶는 형태로, 특정 프로세스를 실행하기 위한 모든 파일과 설정값을 지닌 파일들의 묶음으로 볼 수 있다. Docker image들은 github와 유사한 서비스인 DockerHub를 통해 버전관리 및 배포가 가능하다.
2. 컨테이너(container)
이미지를 실행한 상태로, 응용 프로그램의 종속성과 함께 응용프로그램 자체를 패키징/캡슐화하여 격리된 공간에서 프로세스를 동작시키는 기술이다.
Docker 사용 이유
1. VM을 사용하지 않고도 docker engine을 이용하여 동작하므로 성능 개선과 동시에 적은 메모리 용량을 요구한다.
2. 컨테이너를 실행하기 위한 모든 정보를 가지고 있으므로, 새로운 환경이어도 image만 다운받아서 container을 생성할 수 있다.
3. 개발 환경을 구축할 떄 초기 세팅이 빠르고 실행 환경을 강제화할 수 있다.
4. Docker는 개발자가 원하는 환경 세팅을 모듈식 유닛을 조합함으로써 만들 수 있어서, 개발 주기, 기능 배포, 버그 수정의 속도를 높여준다.
Docker의 도구
1. Docker compose
멀티 컨테이너 도커 애플리케이션을 정의하고 실행하는 도구이다. YAML 파일을 사용하여 애플리케이션의 서비스를 구성하며, 하나의 명령을 가지고 모든 컨테이너의 생성 및 시작 프로세스를 수행한다.
2. Docker swarm
도커 컨테이너의 네이티브 클러스터링 기능을 제공하며, 도커 엔진을 하나의 가상 도커 엔진으로 탈바꿈시킨다. 도커 1.12 이상부터 swarm 모드가 도커 엔진에 통합되어 있다.
'DevOps > Docker' 카테고리의 다른 글
[Docker] 3. image 만들기 (1) | 2024.11.25 |
---|---|
[Docker] 2. Docker 명령어 (0) | 2024.11.20 |