본문 바로가기
Docker/이론

[Docker] 2.Container(2)

by Haengsin 2021. 7. 30.

[컨테이너와 컨테이너 이미지의 구조]

- 컨테이너는 하나의 Application 프로세스

- 컨테이너 1개 = Application 1개

- 컨테이너의 특징 : 완전하게 Application 들이 독립된 공간으로 분리되어 운영됨.

  ○ CPU, Memory, Network, Disk 등 H/W 리소스를 각각 따로 가지고 있다.

  ○ 또한, 사용되는 Hostname, User ID 도 모두 독립적.

- 즉, Frontend 단의 Node.js 는 PHP, MySQL(DB)에 동작되면서 영향을 주지 않는다.

 

 

[Docker Architecture]

 

Docker Architecture

※  Docker Host : Docker Daemon이 동작되고 있는 리눅스 커널이 있는 시스템

  ○ Docker가 Container들을 실행할 수 있는 Platform을 만들어 놨다는 의미.

- 여러 개의 Container들이 독립적으로 isolate되어 동작하지만, 사용하는 커널은 1개이다.

  ○ Docker Host 입장에서 Container는 단순히 동작되는 프로세스.

  ○ Docker Host가 갖고 있는 H/W리소스를 각 Container에 할당하여 실행하는 것.

 

[Container]

컨테이너 예시

(Application Container의 목적은 run node app.js)

각각 하나의 uuid를 갖고 있는 image Layer

- base image Layer : app.js 가 실행되려면 node.js 가 필요하다. 즉 node.js를 먼저 설치하고

- source image Layer : app.js 코드를 컨테이너에 집어 넣는다.

- app.js 에 실행한다.

 

이와 같이 3개의 Layer가 쌓아 가지고 만들어진 Container이다. 

시스템 관전에서는 nodejs를 uuid로 저장(ex. f3ed6cb59ab0)하고 Layer의 사이즈는 3.74MB이다.

이 3개의 Layer가 쌓인 Container를 하나의 Container 이미지라고 부른다.

※ Container Image : 여러 개의 Layer로 구성이 되어 하나의 Application이 실행될 수 있도록 모아져있는 이미지들의 조합

 

[ Container Image와 Container 가 어떻게 다른가? ]

- Docker Host에 dockerd 가 동작 중.

- Container image 들이 HDD에 하나의 File 형태로 저장됨. (ReadOnly)

  ○ 각각의 Layer 별로 File이 따로따로 저장됨.

- 이 Container image를 run하게 되면 메모리에 Container로 하나의 Application 프로세스로 실행됨

 

[컨테이너 동작 방식]

- Hub.docer.com 은 docker.com에서 운영하고 있는 컨테이너를 저장해놓고 있는 저장소.

$docker search nginx

: docker Hub에서 nginx가 있는 지 찾아보아라. dockerd가 docker Hub에 검색을 해서 nginx가 있는 지 확인하여 있으면 List를 출력한다. 

$docker pull nginx:latest

: container image를 하드디스크로 가져온다.

$docker run -d --name web -p 80:80 nginx:latest

: container image를 실행한다. run 대신 create, start를 사용할 수 도 있다.

- docker platform 위에 container가 동작하게 된다. nginx가 설치된 web이라는 이름의 컨테이너

 

이제 Client가 Hostname이나 ip에 80번 port로 연결하면 nginx가 web page를 보내게 된다.

 

 

※ 이성미, [따배도] 도커 시리즈 ,TTABAE-LEARN, https://www.youtube.com/watch?v=m454YTyPWSk&list=PLApuRlvrZKogb78kKq1wRvrjg1VMwYrvi&index=9, 2021-08-31

'Docker > 이론' 카테고리의 다른 글

[Docker] 7.Container 리소스 관리  (0) 2021.09.07
[Docker] 5.Container 운영  (0) 2021.08.24
[Docker] 4.Container Registry  (0) 2021.08.12
[Docker] 3.Container(3)  (0) 2021.08.03
[Docker] 1.Container  (0) 2021.07.29