DevOps

Docker 컨테이너와 이미지 이해하기

일상코더 2023. 2. 19. 21:41

Dokcer란?

         

        - 도커는 컨테이너라는 경량 단위로 애플리케이션을 실행하는 기능을 제공하는 플랫폼이다. 

 

Dokcer 워크플로의 핵심 

 

        빌드 -> 공유 -> 실행

         - 애플리케이션을 컨테이너에서 샐행 할 수 있도록 패키징

         - 다른 사람이 패키지를 사용할 수 있도록 공유

         - 패키지를 내려받은 사람이 컨테이너를 통해 애플리케이션을 실행

 

컨테이너란 무엇인가?

            컨테이너는 말 그대로 물건을 담는 컨테이너와 다를 게 없다. 

                        -> 호스트명, IP 주소, 파일 시스템까지 이들은 모두 도커가 만들어낸 가상 리소스다.

                             이들이 서로 엮여 애플리케이션이 동작할 수 있는 환경이 만들어진다.

                        -> 상자 안에서는 상자 밖의 환경을 볼 수 없다. 그러나 이 상자는 어떤 컴퓨터상에서 동작하는 것이고,

                             이 컴퓨터는 이 상자 말고도 다른 상자를 여러개 실행 할 수 있다.

                        -> 도커가 관리하는 상자는 서로 독립적인 환경을 갖지만 상자가 실행되는 컴퓨터의 CPU와 메모리, 

                             운영체제를 공유한다.

 

         

          호스트 컴퓨터는 별도의 호스트명, IP 주소와 디스크를 갖는다. 

          모든 가상 머신은 호스트 컴퓨터의 운영체제, CPU, 메모리를 공유한다.

 

 

                - 각각의 가상 머신은 자신만의 운영체제를 별도로 갖는다. 

                - 이 운영체제는 애플리케이션이 사용해야 할 CPU와 메모리 자원을 상당량 차지한다.

                - 운영체제의 라이센스 비용과 운영체제 업데이트 설치 부담이 추가로 발생한다. 

                     => 가상 머신은 격리는 달성할 수 있지만 밀집은 제공하지 못한다.

                      => 컨테이너가 이 단점을 해결 할 수 있다.

 

 

                  -> 이러한 구도가 중요한 이유는 격리(isolation)과 밀집(density)라는 얼핏 보면 모순돼 보이는 조건을 동시에

                       만족할 수 있다.

                  -> 밀집이란 컴퓨터에 CPU와 메모리가 허용하는 한 되도록 많은 수의

                       애플리케이션을 실행하는것을 의미한다.

                  -> 각각의 컨테이너는 호스트 컴퓨터의 운영체제를 공유하므로 필요한 리소스가 크게 경감된다.

                  -> 그만큼 실행도 빠르고 같은 호스트 컴퓨터에서 가상 머신에 비해 더 많은 수의

                       애플리케이션을 실행 할 수 있다.