Docker overview - image, container, engine

Image 와 Container 의 이해

이미지 - 컨테이너를 생성할 때 필요한 요소이며, 여러 개의 계층으로 된 바이너리 파일로 존재하며, 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용된다.

컨테이너 - 이미지를 읽기 전용으로 사용하되 이미지에서 변경된 사항만 컨테이너 계층에 저장하므로 컨테이너에 무엇을 하든지 원래 이미지는 영향을 받지 않는다.

  • Image 는 특정 Application 에 필요한 코드와 라이브러리와 의존성 등을 가진 불변(Immutable, unchangeable) 파일이다.
  • Image 는 read-only template 이다. 특정 시점의 가상 환경 혹은 Application 을 나타내는 일종의 스냅샷으로 이해할 수 있다.

→ 이러한 Docker 의 훌륭한 특징 중의 하나로, 개발자들이 안정적이고 단일한 환경에서 test 하고 실험할 수 있는 환경을 만들어 낸다.

  • Container 는 Image 를 단지 run 한 것이다. Container 를 생성하게 되면, 불변한 Image 의 최상단에 Writable Image Layer 를 추가하여 변경이 가능하도록 한다. 이를 쉽게 이해하기 위해서 아래 이미지를 참고하면 된다.
Brief explanation of Container Layer and Image layer


Image 와 Container 는 면밀히 관련되어 있다. Image 는 Container 없이 존재할 수 없으며, Container 는 존재하기 위해서 Image 를 run 해야 한다. 따라서, Container 는 Image 에 의존적이고, run-time 환경을 생성하기 위해서 Image 를 사용한다. Image 와 Container 의 개념은 Docker 의 근본적인 component 로써 존재한다.

정확하게 일치하는 개념은 아니지만, 객체 지향 관점에서 Docker 의 생태계를 비추어 볼 때 유사한 지점이 있다. Image 를 class 에 비유할 수 있으며, Container 를 해당 class 의 Instance 로 비추어 볼 수 있을 것 같다.



Docker Engine

Docker Engine 은 client-server Application 이다.

docker ps → /usr/ bin/docker → /var/run/docker.sock → docker daemon

  • Docker daemon

dockerd 는 volumes, networks, containers, images 같은 Docker Objects 들을 관리하고 Docker API 요청을 받고 있다. daemon 은 또한 다른 daemon 과의 통신이 가능하다.

  • Docker client

CLI 를 통해 docker 명령어를 사용하여 Docker 와 상호작용을 할 수 있다. docker run 과 같은 명령어를 사용했을 때, client 는 해당 명령어를 dockerd 에 전송한다. docker 명령어는 Docker API 를 사용한다. client 는 하나 이상의 daemon 과 통신이 가능하다.

  • Docker registires

docker image 들을 저장하는 공간이다. Docker Hub 는 public registry 로 누구나 사용이 가능하고, Docker 는 default 로 Docker Hub 에서 image 를 찾는다. docker pull 혹은 docker run 명령어를 사용했을 때, 필요한 Image 를 registry 로 부터 가져온다. 또한 docker push 명령어를 사용했을 때, 해당 이미지는 설정된 registry 로 push 된다.


AWSKRUG Container Hands-On #1 - 모두의 Docker

댓글

이 블로그의 인기 게시물

About JVM Warm up

About idempotent

About Kafka Basic

About ZGC

sneak peek jitpack

Spring Boot Actuator readiness, liveness probes on k8s

About Websocket minimize data size and data transfer cost on cloud

About G1 GC

대학생 코딩 과제 대행 java, python, oracle 네 번째