CI.CD/Docker

[Docker] 도커란 무엇인가?

lakelight 2023. 1. 26. 13:38
728x90
반응형

Docker 도커

도커는 컨테이너를 관리한다. (이미지 출처: [참고]1)

'컨테이너 기반의 오픈소스 가상화 플랫폼'

서버에서 컨테이너란, 다양한 프로그램, 실행환경을 컨테이너로 추상화하고,동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해줍니다.
백엔드 프로그램, 데이터베이스 서버, 메시지 큐등 어떠한 프로그램도 컨테이너로 추상화 할 수 있고,어떠한 환경에서도 실행할 수 있습니다.

TMI) 구글은 모든 서비스를 컨테이너로 동작시키고, 매주 20억 개의 컨테이너를 구동한다고 합니다.

 

Container 컨테이너

도커의 컨테이너 (이미지 출처: [참고]1)

'격리된 공간에서 프로세스가 동작하는 기술'

기존의 VMware, VirtualBox같은 가상머신은 Host OS위에 Guest OS 전체를 가상화하여 사용하는 방식을 이용하였습니다. 이 방식은 여러가지 OS를 가상화할 수 있고 사용법이 간단하지만, 무겁고 느려서 운영환경에서는 사용할 수 없었습니다.
이러한 상황을 개선하기 위해 CPU의 가상화 기술을 이용한 KVM(Kernel-based Virtual Machine)과 반가상화 방식이 등장하였습니다. 이 방식은 Guest OS가 필요하긴 하지만 전체 OS를 가상화하는 방식이 아니였기 때문에 성능이 향상되었습니다.
이러한 기술들은 OpenStack이나 AWS같은 클라우드 서비스에서 가상 컴퓨팅 기술의 기반이 되었습니다.

기존 방식과 Docker 방식 (이미지 출처: [참고]1)

가상화 방식에 상관없이 추가적인 OS를 설치하여 가상화하는 방법은 성능 문제가 있습니다.
이를 개선하기 위해 '프로세스 격리' 하는 방식이 등장합니다.

이 방식을 리눅스에서는 리눅스 컨테이너라고 하고 단순히 프로세스를 격리시키기 때문에 가볍고 빠르게 동작합니다.
CPU나 메모리는 딱 프로세스가 필요한 만큼만 추가로 사용하고 성능적으로도 손실이 거의 없습니다.
도커의 컨테이너도 이와같이 작동하는 것입니다.

하나의 서버에 여러개의 컨테이너를 실행하면 서로 영향을 미치지 않고 독립적으로 실행되어 마치 가벼운 VM을 사용하는 느낌을 줍니다. 또한 새로운 컨테이너를 만드는데 걸리는 시간은 1-2초로 가상머신과 비교도 안될 만큼 빠릅니다.

 

Image 이미지

도커의 이미지 (이미지 출처: [참고]1)

'컨테이너 실행에 필요한 파일과 설정값을 포함하고 있는 것'

이미지는 상태값을 가지지 않고 변하지 않습니다. 컨테이너는 이미지를 실행한 상태라고 볼 수 있고, 같은 이미지에서 여러 개의 컨테이너를 생성할 수 있고, 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 남아있습니다.

이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 이미지를 통해 컨테이너를 생성할 수 있습니다.
이미지는 Docker hub이나 Docker Registry 저장소에서 관리할 수 있고, 누구나 쉽게 만들고 배포할 수 있습니다.

도커는 이미지를 만들기 위해 Dockerfile이라는 파일에 자체 DSL(Domain-specific language)언어를 이용하여 이미지 생성 과정을 적습니다.

 

 

마무리

항상 공부해야지 생각만했던 도커를 알아보기 시작하였습니다.
이번 시간에는 도커, 컨테이너, 이미지에 대한 전반적인 개념을 알아보았습니다.

오늘 공부한 내용을 까먹지 않기 위해 블로그에 적으면서 공부를 했습니다.
확실히 읽기만 했을 때보다 글로 적으면서 하니까 머리속에 더 잘 기억됩니다.

다음에는 직접 도커를 설치해서 컨테이너를 만들어보고 이미지도 만들어서 배포까지 진행해보겠습니다.
포스팅 읽어주셔서 감사합니다.

 

[참고]

1. 초보를 위한 도커 안내서 - 도커란 무엇인가?

 

728x90
반응형