: 도커는 리눅스 컨테이너에 리눅스 어플리케이션을 프로세스 격리기술을 사용하여 더 쉽게 컨테이너로 실행하고 관리할 수 있게 해주는 오픈소스 프로젝트입니다. 도커는 일반적으로 도커 엔진(Docker Engine) 혹은 도커에 관련된 모든 프로젝트를 말합니다.
-> 도커
는 컨테이너 기반의 오픈소스 가상화 플랫폼
: 도커 엔진은 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어할 수 있고 다양한 기능을 제공하는 도커의 프로젝트입니다. 도커의 생태계에 있는 여러 프로젝트들은 도커 엔진을 좀 더 효율적으로 사용하기 위한 것에 불과하기 때문에 도커의 핵심은 도커 엔진이라고 할 수 있습니다.
도커가 나온 이후, 어떠한 프로그램도 컨테이너로 만들 수 있게 되었습니다. 서로 다른 프로그램이더라도 컨테이너로 규격화되었고, AWS, Azure, Google cloud 등 어떤 환경에서도 돌아갑니다.
이러한 도커는 가상 머신과 비슷하게 생각할 수 잇지만 비슷한 점과 다른 점이 있습니다.
도커는 가상머신처럼 독립적으로 실행되지만, 가상머신보다 빠르고 쉽고 효율적입니다. 도커는 컴퓨터 자원을 그대로 사용합니다. 가상머신과 도커의 차이를 하기에서 좀 더 알아보겠습니다.
성능 손실이 큼
배포할 때 용량이 큼
성능 손실 없음 無
용량이 작음
배포하는 시간이 가상머신에 비해 빠르며, 사용할 때의 성능 손실 또한 거의 없음
도커 엔진에서 사용하는 기본 단위는 이미지와 컨테이너이며 도커 엔진의 핵심입니다.
도커 이미지와 컨테이너는 1:N
관계입니다.
도터 이미지와 컨테이너의 관계는 운영체제에서의 프로그램<->프로세스
, 객체지향 프로그래밍에서의 클래스 <-> 인스턴스
의 관게와 비슷하다고 생각하면 이해가 편합니다.
Docker File -> Docer Image
: Docker File은 도커 이미지를 만들 때 사용하는 파일. docker build 명령어를 실행시키면 도커 이미지를 만들 수 있습니다.
Docer Image -> Docker Container
: Docker Image를 docker run 명령어를 실행시키면 Docker Container를 만들 수 있습니다.
컨테이너를 생성할 때 필요한 요소이며, 가상 머신을 생성할 때 사용하는 iso파일과 비슷한 개념입니다. 이미지는 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용되며 여러 계층으로 된 바이너리 파일로 존재합니다.
도커 이미지로 생성할 수 있으며, 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일이 들어 있는, 호스트와 다른 컨테이너로부터 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간(프로세스)이 생성됩니다.
대부분의 도커 컨테이너는 생성될 때 사용된 도커 이미지의 종류에 따라 알맞은 설정과 파일을 가지고 있기 때문에 도커 이미지의 목적에 맞도록 사용되는 것이 일반적입니다.
- 일관된 환경 : 컨테이너는 실행 환경을 패키징하므로, 개발 환경과 프로덕션 환경 간의 일관성을 유지할 수 있습니다.
- 쉬운 배포 : 컨테이너는 필요한 모든 것을 포함하고 있으므로, 배포 및 확장이 간단하고 빠릅니다.
- 자원 효율성 : 가상 머신에 비해 가볍고 빠르게 시작되며, 여러 개의 컨테이너를 하나의 호스트 시스템에서 실행할 수 있어 자원을 효율적으로 사용할 수 있습니다.
- 스케일링과 관리 용이성 : 컨테이너 오케스트레이션 도구를 사용하여 여러 컨테이너를 쉽게 관리하고 스케일링할 수 있습니다.
https://seosh817.tistory.com/345
https://wooody92.github.io/docker/
https://seosh817.tistory.com/345#Virtual