본문 바로가기
개발 관련 공부/기타

Docker 이해하기

by swlotto 2024. 12. 3.

[오늘의 공부]

요즘 인공지능 관련 분야 뿐만 아니라 여러 분야에서 사용하고 있는 Docker(이하, 도커)에 대해 공부해보고자 한다.

도커 로고

도커는 컨테이너 기술을 기반으로 한 일종의 가상화 플랫폼입니다. 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는데 필요한 모든 것이 포함되어 있다.

 

▶ 도커의 필요성

기존에 사용하던 가상 머신(VM)은 사용하기 위해 OS를 설치해야 했고, 이미지 안에 OS가 포함되어 있기 때문에 용량이 매우 크고 속도가 느리다는 단점이 있다.

이에 비해 반가상화보다 더 경량화된 방식을 사용하는 도커는 OS 전체를 가상화하지 않고 컨테이너라는 리눅스 커널 레벨에서 제공하는 가상 공간을 사용하여 월등한 속도로 동작하며, 리눅스 컨테이너를 기반으로 이미지를 편리하게 관리하고 배포할 수 있다.

다시 말해, 환경에 구애받지 않고 애플리케이션을 신속하게 배포, 확장할 수 있다.

 

▶ 도커 이미지와 도커 컨테이너(Docker Inage & Docker Container)

도커 이미지란 컨테이너를 실행할 수 있는 실행파일, 설정 값들을 가지고 있는 것으로, 더 이상 의존성 파일을 컴파일하거나 이것저것 설치할 필요가 없는 상태의 파일을 의미한다.

도커 컨테이너란 이미지를 실행한 상태로 응용프로그램의 종속성과 함께 응용프로그램 자체를 패키징 or 캡슐화하여 격리된 공간에서 프로세스를 동작시키는 기술이다.

R, Python 데이터 분석과 프로그래밍의 친구 https://rfriend.tistory.com

 

도커 이미지와 컨테이너의 차이를 간단하게 말하면 이미지는 설계서, 컨테이너는 설계서로 만들어진 상품이라고 할 수 있다. 이미지를 중간에 바꾸게 되더라도 기존 컨테이너는 더 이상 이미지에 영향을 받지 않는다.

 

▶ 도커  아키텍처

도커 아키텍처

Client는 도커 컨테이너를 관리하고 실행하기 위해서 Daemon과 상호작용하는 Binary 파일이다. Daemon은 Host에 설치되어 있어 도커 컨테이너를 관리하는 프로세스이며, Client와 상호작용하며, 생성, pull, 실행을 할 수 있다.

Registry는 도커 이미지가 저장되어 있는 장소이며, Public Registry와 Private Registry가 있다.

도커 이미지는 Daemon을 통해 컨테이너로 실행 가능하도록 필요한 프로그램, 라이브러리, 소스 등이 설치된 파일이며, 컨테이너는 이미지를 실행한 상태이다.

 

▶ 결론

도커는 이미지를 실행시켜 컨테이너를 만들거나, 생성된 컨테이너 관리, 컨테이너를 다시 이미지로 만드는 작업을 쉽게 할 수 있는 강력한 도구입니다. 개발 과정에서 다른 라이브러리와 충돌하는 것을 방지하기 위해 격리된 환경이 필요할 때, 완성된 서비스를 배포할 때, 배포중인 서비스를 받아서 실행할 때 등 다양한 상황에서 유용하게 사용 가능하다.

 

[References]

 

[Docker] 도커란 무엇인가?

1. 도커란? Go언어로 작성된 리눅스 컨테이너 기반으로 하는 오픈소스 가상화 플랫폼이다. 다시 말해 특정한 서비스를 패키징하고 배포하는데 유용한 오픈소스 프로그램이다. 컨테이너에는 라이

squirmm.tistory.com