프로그래밍/Docker | Kubernetes

[20210507] Docker 이해하기

ming235 2021. 5. 7. 20:59

 

Docker

 

 

컨테이너 기반의 오픈소스 가상화 플랫폼

IT 소프트웨어인 Docker는 리눅스 컨테이너를 만들고 사용할 수 있도록 하는 컨테이너화 기술이다.

 

얄팍한 코딩사전은 볼 때마다 재밌다

 

가상화 컨테이너 실행 환경 위에서 application 배포 엔진을 더함으로써,

사용자의 코드를 어디서든 빠르고 가볍게 실행시킬 수 있는 기술을 제공한다.

 

실제로 Docker는 한 컨테이너 당 하나의 application이나 프로세스를 실행하는 것을 권장한다.

이것 역시 MSA의 철학과 일맥 상통한다. 지긋지긋한 MSA

 

 

 

가상화

 

 

 

컨테이너 가상화의 장점은 훨씬 가볍고 빠르고 쉽게 가상환경을 실행 시킬 수 있고,

일반적인 시스템 API interface를 사용한다.

 

단점은 baseOS와 다른 운영체제에서는 실행시킬 수 없으며 보안적인 측면에서 약하다.

 

하나의 서버에 여러개의 컨테이너를 실행하면 서로 영향을 미치지 않고 독립적으로 실행되어

마치 가벼운 VM Virtual Machine을 사용하는 느낌.

 

실행중인 컨테이너에 접속하여 명령어를 입력할 수 있고 apt-get이나 yum으로 패키지를 설치할 수 있으며

사용자도 추가하고 여러개의 프로세스를 백그라운드로 실행할 수도 있다고 한다.

 

 

 

이미지(Image)

 

 

도커 = 컨테이너 + 이미지

여기서 이미지? 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것

 

이미지는 상태값을 가지지 않고 변하지 않는다.

컨테이너는 이미지를 실행한 상태라고 볼 수 있고 추가되거나 변하는 값은 컨테이너에 저장

같은 이미지에서 여러개의 컨테이너를 생성 가능

컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 보존

 

추가로 도커 이미지의 용량은 보통 수백메가라고 한다.

Docker hub를 통해 엄청 큰 용량의 전세계 공개 이미지를 전부 다 무료로 관리해주기 때문에 이렇게 핫해진 것 같다.

 

 

 

 

 

 

 

 

 

출처

얄팍한 코딩사전

초보를 위한 도커안내서