본문 바로가기
개발/DevOps

Docker란 무엇일까?

by leedonggeun 2022. 11. 23.

도커란?

도커는 컨테이너 기반 가상화 도구입니다.

💡 가상화
     하나의 서버 자원을 나누어 할당하며, 성능을 분산시키고
     분산된 서버는 각기 다른 서비스를 수행할 수 있습니다.

1. 가상화의 2가지 방법

서버 가상화 컨테이너 기반 가상화
하나의 물리적 Host에서 여러 개의 Guest OS를 올려 각각의
Guest OS에서 가상화됨
Guest OS가 필요 없이 별도의 엔진을 통해
Host 서버의 자원 사용이 가능
하이퍼바이저(Hypervisor)를 통한 가상화로, 성능의 손실이 있음
Guest OS를 실행하기 위해 커널, 라이브러리 등을 반드시 포함해야 하기 때문에 이미지의 크기가 큼
별도의 Engine (Docker Engine 등)을 통해 가상화 됨
Guest OS가 필요 없이 chroot, 네임스페이스, cgroup 등의 기술을 활용하여 가상화함
💡 chroot         :: 특정 프로세스에서의 루트 디렉토리를 변경 (ASIS: / → TOBE: /toberoot)
     네임스페이스 ::
특정 프로세스의 시스템 리소스 분리 실행
     cgroup        :: CPU, Network, Memory 등 하드웨어 자원을 그룹 별로 관리

2. 도커의 가상화 구성

이미지의 용량이 서버 가상화 방식보다 적기 때문에 배포하는 시간이 단축되고, 비교적 성능 손실도 적습니다.

도커의 컨테이너 기반 가상화 구성

2-1. 도커 엔진

컨테이너의 생명주기를 관리하는 주체

2-2. 도커 이미지

컨테이너를 구성하기 위한 요소이며,
서비스에 필요한 서버 프로그램, 소스코드, 라이브러리, 컴파일된 실행 파일을 담은 요소입니다.
즉, 특정 프로세스를 실행하기 위한 모든 파일과 config를 담아 더 이상 다른 무언가를 가감할 필요 없는 상태의 파일입니다.

예를 들어, MySQL을 실행하고자 한다면 MySQL에 필요한 모든 파일과 port 등과 필요한 명령어를 모두 담고 있습니다.

2-3. 도커 컨테이너

위에서 설명한 도커 이미지의 목적에 맞는 격리된 시스템 자원 및 네트워크를 사용할 수 있는 공간이 할당되며,
이것이 바로 컨테이너 입니다. 한 개의 Host 서버는 여러 개의 컨테이너를 가져도 상관없으며, 각각 독립적으로 실행됩니다.

3. 마치며...

최근 사내 프로젝트로 도커에 대해 알아보았습니다.
조금씩 공부해가며 테스트해보고 있는 결과, 왜 요즘 도커가 각광받는지를 몸소 알게 되었습니다.
private registry에 올려 그곳에 접근하여 같은 이미지를 다른 Infrastructure에서도 문제없이 사용할 수 있다는 점이 아주 매력적이었습니다.

'개발 > DevOps' 카테고리의 다른 글

Docker Swarm 환경에서 자원 할당을 해보자.  (0) 2023.01.29
Docker Swarm이란 무엇일까?  (0) 2022.11.25
Docker를 설치해보자  (0) 2022.11.24
젠킨스 버전 업데이트하기  (0) 2022.11.07
젠킨스 Jenkins  (0) 2022.11.03

댓글