[Docker]Docker란?

2021. 6. 15. 01:10Docker

도커란 애플리케이션을 개발, 실행, 관리하기 위한 컨테이너 기반의 오픈 소스 플랫폼입니다.

도커는 컴퓨터의 실행환경에 구애 받지 않고 컨테이너안에 프로그램 실행에 필요한 모든 실행 환경들을 패키징하여 프로그램의 배포 및 관리를 단순하게 해줍니다.

도커는 go 언어로 작성되었습니다.

도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다.
여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다.
이는 실행 중인 환경에 관계 없이 언제나 동일하게 실행될 것을 보증한다. - 위키백과

컨테이너란?

컨테이너는 도커가 등장하기 전에도 있던 기술로, 격리된 공간에서 프로세스가 동작하는 기술입니다.

기존의 VMware나 VirtualBox를 이용한 가상화 방식은 호스트 OS 위에 게스트 OS 전체를 가상화하여 사용하는 방식입니다. 여러가지 OS를 가상화할 수 있고 비교적 사용법이 간단하지만 무겁고 느려서 운영환경에선 사용하기 어려웠습니다.

이를 개선하기 위해 프로세스를 격리하는 방식이 등장합니다.

프로세스를 격리하는 방식은 가볍고 빠르게 동작합니다. CPU와 메모리를 필요한 만큼만 추가로 사용하고 성능적으로 손실이 거의 없습니다.

이미지란?

이미지는 컨테이너 생성에 필요한 모든 파일과 설정값 등을 포함하고 있는 읽기 전용 템플릿입니다.

이미지는 상태값을 가지지 않고 불변성(immutable)을 가집니다.

컨테이너는 이미지를 실행한 인스턴스로 볼 수 있고 실행 이후 추가되거나 변하는 값은 컨테이너에 저장됩니다.

즉, 새로운 서버가 추가할 때 의존성을 컴파일하거나 이것저것 설치할 필요 없이 미리 만든 이미지로 컨테이너를 생성하기만 하면 됩니다.

도커 이미지는 Docker Hub에 등록하고 관리할 수 있습니다.

도커 이미지는 수백메가에서 수기가로 큰 용량을 가지는데 Docker Hub에서 무료로 관리해줍니다.

Dockerfile

도커 이미지를 만들기 위해 DSL(Domain-Specific Language)언어를 이용하여 이미지 생성 과정을 정의한 문서입니다.

Dockerfile의 각 명령어는 이미지에 레이어를 만듭니다.

Dockerfile을 변경하고 이미지를 다시 빌드하면 변경된 레이어만 다시 빌드됩니다.

Dockerfile을 코드와 함께 버전 관리한다면 누구나 이미지 생성과정을 쉽게 파악하고 수정할 수 있습니다.

Docker 컨테이너란?

도커 컨테이너란 이미지를 통해 실행한 인스턴스입니다.

Docker API를 이용해서 컨테이너를 생성, 시작, 중지, 이동, 삭제할 수 있습니다.

현재 상태를 기반으로 새 이미지를 만들 수도 있습니다.

도커의 장점

  1. 현재 호스트에서 여러 컨테이너를 동시에 실행할 수 있습니다.
  2. 컨테이너는 애플리케이션 실행에 필요한 모든 것이 포함되어 있기 때문에 현재 호스트에 설치된 항목에 의존할 필요가 없습니다.
  3. 컨테이너는 가볍고 빠르며 일관되게 애플리케이션을 제공할 수 있습니다.

Docker 아키텍처

Docker는 클라이언트-서버 아키텍처를 사용합니다.

Docker Client는 컨테이너를 빌드, 실행 및 배포 같이 무거운 작업을 수행하는 Docker 데몬과 통신합니다.

Docker Client와 데몬은 소켓이나 네트워크 인터페이스를 통해 통신합니다.

 

1. Docker Daemon이란?

Docker 데몬(dockerd)은 Docker API 요청을 수신하고 이미지, 컨테이너, 네트워크와 같은 Docker객체를 관리합니다.

데몬은 다른 데몬과 통신하여 Docker 서비스를 관리할 수 있습니다.

2. Docker Client란?

Docker 클라이언트란 많은 Docker 사용자가 Docker와 상호작용하는 기본 방법입니다.

'docker run'과 같은 명령어를 사용하면 Docker Client가 이 명령을 Docker 데몬에 전송하여 실행합니다.

Docker 명령은 Docker API를 사용합니다.

3. Docker Registry란?

Docker 레지스트리는 Docker 이미지를 저장합니다.

Docker Hub는 누구나 사용 가능한 공용 레지스트리이며 Docker는 기본적으로 Docker Hub에서 이미지를 찾도록 구성됩니다.

'docker pull'이나 'docker run' 명령으로 레지스트리에서 필요한 이미지를 가져옵니다.

'docker push'명령어로 이미지를 레지스트리로 푸시합니다.

4. Docker 객체란?

Docker를 사용하면 이미지, 컨테이너, 네트워크, 볼륨, 플러그인 등 기타 객체를 만들고 사용하게 됩니다.

5. Docker Engine이란?

CLI환경에서 Docker 기술을 사용할 수 있도록 하는 소프트웨어입니다.

Docker Client와 Docker Daemon을 포함하고 있습니다.

 

Ref.

https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

 

초보를 위한 도커 안내서 - 도커란 무엇인가?

도커를 처음 접하는 시스템 관리자나 서버 개발자를 대상으로 도커 전반에 대해 얕고 넓은 지식을 담고 있습니다. 도커가 등장한 배경과 도커의 역사, 그리고 도커의 핵심 개념인 컨테이너와 이

subicura.com

https://docs.docker.com/get-started/overview/

 

Docker overview

 

docs.docker.com

 

https://ko.wikipedia.org/wiki/%EB%8F%84%EC%BB%A4_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4) 

 

도커 (소프트웨어) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다. 도커 웹 페이지의 기능을

ko.wikipedia.org