도커란?
도커는 컨테이너 기반 가상화 도구입니다.
💡 가상화 하나의 서버 자원을 나누어 할당하며, 성능을 분산시키고 분산된 서버는 각기 다른 서비스를 수행할 수 있습니다. |
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 |
댓글