도커란? 도커 사용 이유 와 컨테이너 및 이미지, 구성 알아보기

웹 애플리케이션, 웹 서비스, 데이터베이스 등은 정보 사회인 현대에서 많이 사용되고 있습니다.

이러한 애플리케이션을 실행을 할 때 사용 되는 도구가 도커입니다.

오늘은 도커란?

무엇인지 자세히 알아보고, 도커 사용법과 도커 컨테이너 및 도커 이미지에 대한 개념을 설명해 드리겠습니다.



도커란?

도커란

도커란 애플리케이션을 패키징 할 수 있는 플랫폼으로 리눅스 컨테이너 기반의 오픈소스 가상화 플랫폼입니다.

기존에는 여러 애플리케이션 구동 시 환경 및 패키지 변수의 충돌이 발생을 하였기 때문에 Virtual Machine을 활용하여 애플리케이션 별로 환경 변수와 패키지를 분리하여 구동하였습니다.

하지만 이러한 방법은 환경 자체가 무거워진다는 단점이 발생을 하기 때문에 별로 좋은 방법이 아니었습니다.

도커는 이러한 문제점을 보완하기 위해 컨테이너라는 기술을 만들어 운영체제를 가상화 실행하였습니다.

도커 컨테이너 및 이미지

도커는 이미지, 컨테이너, 파일로 구성이 되어 있습니다.


1. 도커 이미지

도커 컨테이너를 실행을 하기 위해서는 실행 파일과 설정 값으로 구성되어 있는 도커 이미지가 있어야 합니다.

이미지는 도커 컨테이너를 생성하기 위한 템플릿으로, 애플리케이션을 가동 가능하게 만들어 놓은 스냅샷 와 같습니다.

도커 이미지는 기존 이미지에 레이어를 추가하여 생성하거나, Registry에서 다운로드하여서 사용하면 됩니다.

쉽게 얘기해 도커 이미지는 컨테이너의 설계도 역할을 하며, 변형이 불가능하고 컨테이너 없이 이미지 혼자 존재 가능합니다.

또한 컴퓨팅 자원이 필요하지 않고, 레지스트리 플랫폼으로 공유가 가능합니다.

2. 도커 컨테이너

도커 컨테이너는 도커 이미지로 만들어진 프로그램이며, 변형(쓰기 가능)이 가능합니다. 또한 이미지를 실행시켜야 존재를 하고, 실행을 위해서는 컴퓨팅 자원이 꼭 필요합니다.

한마디로 도커 컨테이너는 응용 프로그램을 패키징 하여 프로세스를 동작시키는 기술입니다.

3. 도커 파일

도커 파일은 여러 개의 레이어로 구성된 파일로 여러 개의 레이어를 다양한 이미지가 공유해 이미지를 효과적으로 저장 및 전송하는 템플릿입니다.

즉 생성할 이미지의 정보가 적혀 있는 템플릿으로 빌드하면 자동으로 이미지가 생성이 되고 도커 파일을 통해 자동으로 애플리케이션 빌드 및 배포가 되는 것을 말합니다.

도커 구성

도커 구성

도커는 클라이언트 와 데몬, 레지스트리, 컴포즈로 구성이 되어 있습니다. 각 구성 요소를 알려 드리겠습니다.


1. 도커 클라이언트

도커 클라이언트는 이미지 검색 및 다운로드 및 이미지 빌드를 하고, 컨테이너 생성 및 실행, 중지, 재 시작을 합니다. 또한 컨테이너 상태 및 로그를 확인합니다.

도커 클라이언트는 이러한 기능으로 컨테이너를 구축하고, 실행, 배포하는 도구입니다.

2. 도커 레지스트리

도커 레지스트리는 이미지를 관리, 저장하는 서비스입니다.

3. 도커 데몬

도커 컨테이너를 실행 관리하는데 필요한 도커 데몬은 백엔드 프로세스이며, 컨테이너 생성 및 네트워크, 보안을 관리하고, 이미지를 저장합니다.

4. 도커 컴포즈

도커 컴포즈는 클라이언트와 비슷한 방식으로 데몬과 통신을 하면서 컨테이너 세트로 구성된 애플리케이션을 관리하는 도구입니다.

도커 사용 이유

도커는 리소스, 운영 효율성이 좋고, 높은 보안성을 가지고 있습니다. 또한 애플리케이션 개발과 배포가 간단하여, 테스트, 생산 환경, 개발 다양한 환경에서 사용을 할 수 있습니다. 또한 다양한 애플리케이션(웹 애플리케이션, 웹 서비스, 데이터 베이스, 마이크로 서비스 등)을 실행할 수 있어 편리합니다.

1. 리소스 효율성 향상

도커는 리소스 사용이 최적화되어 있어 필요에 따라 쉽게 생성 및 삭제를 할 수 있고, 호스트 운영 체제 공유로 인하여 리소스를 효율적으로 사용할 수 있습니다.

2. 운영 효율성 향상

도커는 모니터링 도구와 통합되어 있어 다양한 배포가 가능하여 운영에 최적화되어 있고, 일관된 방식으로 관리가 되기 때문에 효율적 운영이 가능합니다.

3. 높은 보안성

도커 컨테이너는 독립된 체제로 애플리케이션이 변경이 되어도 별다른 영향을 받지 않습니다.

또한 보안을 위한 다양한 기능을 가지고 있어 높은 보안성을 갖추고 있습니다.


4. 애플리케이션 개발 및 배포 최적화

도커는 애플리케이션 개발 최적화를 하기 위하여 인프라에서 애플리케이션을 분리하였습니다.

또한 분리된 애플리케이션은 독립적으로 실행이 되기 때문에 호스트 운영 체제가 바뀌더라도 별다른 영향을 받지 않습니다.

도커는 애플리케이션 배포에 최적화되어있습니다. 도커 이미지에는 애플리케인션 실행을 위한 모든 속성이 포함되어 있어, 애플리케이션 배포할 때 인프라를 구성할 필요 없어 배포에 최적화가 되어 있습니다.

도커 문제점

아무리 좋은 프로그램도 문제점은 있습니다. 도커의 가장 큰 문제점은 호환성 문제점입니다.

또한 컨테이너 복잡성과 보안 문제도 해결을 해야 합니다.

1. 보안 문제

도커를 사용하는데 이유가 높은 보안성이라고 했으면서 왜 문제점으로 잡느냐?라고 생각 하실 수 있습니다.

도커 컨테이너가 독립된 체제로 보안성은 높지만, 100% 완벽하다고 할 수 없기 때문입니다.

도커를 더욱 안전하게 사용하기 위해서는 컨테이너에 최소한의 권한만 부여하고, 신뢰할 수 있는 소스에서 이미지를 다운로드하여야 합니다.

또한 외부에서 접근할 수 없도록 네트워크를 설정해야 합니다.

2. 호환성 문제

사용 이유에서 얘기를 했지만 도커는 인프라에서 애플리케이션을 분리를 하였습니다.

하지만 도커가 모든 애플리케이션과 호환이 된 것은 아닙니다.

호스트 운영 체제의 특정 기능을 사용하는 애플리케이션과, 프레임워크 및 라이브러리에 의존하는 애플리케이션과 호환이 되지 않을 수 있습니다.

3. 복잡한 컨테이너

도커는 다양하게 사용되는 만큼 다양한 기능이 있습니다.

그렇기 때문에 학습을 해야 부분이 많아, 습득하는데 오랜 시간이 걸립니다.

마치며

오늘은 도커란 무엇이고, 도커 사용 이유와 도커 컨테이너, 이미지, 구성에 대해 알아보았습니다.

도커는 효율적인 애플리케이션 개발 및 쉬운 배포로 인하여 최근에 많이 사용하고 있습니다.

앞으로 더욱 좋은 애플리케이션이 나오는 만큼 도커는 계속 사용을 할 것입니다.

끝까지 읽어 주셔서 감사합니다.

댓글 남기기