IWished
article thumbnail
Published 2023. 4. 14. 11:35
Container, Image, Registry DevOps/Docker

Docker Container

해운 업계에서는 다양한 종류의 화물을 효율적으로 운반하기 위해 만들어진 표준화된 컨테이너가 존재한다.

어떤 물건을 싣더라도 표준화 된 화물선만 있다면 여러 개의 화물을 효율적으로 운반할 수 있다.

이러한 개념은 도커에서도 적용됐다.

특정 서비스를 운영 할 때, 하나의 환경에서 모든 서비스를 동작하게 하는 것이 아닌, 기능별로 나누어진 여러 기능의 애플리케이션이 결합되어 동작하게 만들 수 있다.

이렇게 다양한 기능별 애플리케이션을 효과적으로 제어하기 위해 컨테이너라는 개념이 생겨났다.

 

컨테이너는 애플리케이션이 동작하기 위해 필요한 각종 요소들을 표준화된 방식으로 묶어 동작할 수 있도록 하는 구조를 뜻한다.

이렇게 컨테이너 단위로 묶게 되면 하나의 컴퓨팅 환경 안에서도 여러 개의 애플리케이션을 효율적으로 관리할 수 있다.

이때, 컨테이너는 하나의 운영체제를 논리적인 구획으로 구분하여 사용하는 것으로, OS를 추가로 실행하는 것이 아니다.

  • 이는 하나의 OS 위에 별도의 OS를 추가적으로 구동해야 하는 가상머신에 비해 성능적으로 월등하다.
 

What is Docker

Window10 도커 desktop 설치 방법 https://goddaehee.tistory.com/251 도커란 무엇인가 소개 및 배경 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 다양한 이유로 계속 바뀌는 서버 환경과 개발 환경

nninzoo.tistory.com

 

Docker Image

도커 이미지는 도커에서 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일 된 실행 파일을 묶는 형태를 뜻한다.

즉, 특정 프로세스를 실행하기 위한(컨테이너 생성 및 실행에 필요한) 모든 파일과 설정값을 지닌 것으로, 추가로 의존성 파일을 컴파일하거나 이것저것 설치할 필요가 없는 상태의 파일을 의미한다.

  • 특정 프로세스를 실행하기 위해 필요한 파일과 설정값을 가지고 있으므로 보통 도커 이미지의 용량은 수백MB ~ 수GB가 넘는다.
    • 하지만 이는 가상머신의 이미지에 비하면 적은 용량이라고 볼 수 있다.

이미지는 상태 값을 가지고 변하지 않기 때문에 하나의 이미지로 여러 컨테이너를 생성할 수 있고, 컨테이너를 삭제해도 이미지는 변하지 않고 그대로 남아있다.

  • 즉, 컨테이너를 삭제해도, 같은 이미지로 컨테이너를 생성하면 동일한 환경의 컨테이너가 생성된다.
  • 이런 도커 이미지는 Github와 유사한 서비스인 DockerHub를 통해 버전 관리와 배포가 가능하다.

이미지는 Dockerfile 이라는 파일로 만들 수 있고, Dockerfile에는 소스와 함께 의존성 패키지 등 사용된 설정 파일의 버전 관리가 용이하도록 명시되어진다.

  • 따라서 누구나 이미지 생성과정을 확인할 수 있고, 수정 또한 가능하다.

- Layer

레이어는 기존 이미지에 추가적인 파일이 필요할 때 다시 다운로드 받는 것이 아닌 해당 파일만 추가하는 개념이다.

이미지는 여러 개의 읽기 전용(read only) 레이어로 구성되고, 파일이 추가되면 새로운 레이어가 생성된다.

도커는 이런 여러 개의 레이어를 묶어서 하나의 파일시스템으로 사용할 수 있게 해준다.

따라서 이미지와 레이어는 같은 의미로 사용된다.

 

Docker Registry

도커 레지스트리는 도커 이미지를 관리하는 저장소의 역할을 한다.

즉, 도커 레지스트리는 도커 이미지를 사용자들끼리 공유 할 수 있도록 하는 플랫폼이고, 크게 Public Registry, Private Registry로 나뉜다.

Public 레지스트리는 대표적으로 위에서 언급한 DockerHub가 있으며 기타 다른 벤더 업체들의 레지스트리가 존재한다.

Private 레지스트리는 사용자가 직접 레지스트리를 구축해서 자신의 내부망에서 사용하거나 외부망과 연결해서 사용할 수도 있다.

- Repository

  • 레지스트리 내에 도커 이미지가 저장되는 공간
  • 이미지 이름을 레포지토리의 이름으로 사용하기도 한다.
  • GitHub의 레포지토리와 유사하게 생각하면 됨

- Tag

  • 같은 이미지라고 할지라도 버전 별로 안의 내용이 다를 수 있기 때문에 버전 정보를 주로 입력한다.
  • 이미지를 받아올 때 태그를 따로 명시하지 않는다면 latest 태그를 붙인 이미지를 가져온다

'DevOps > Docker' 카테고리의 다른 글

Docker CLI  (0) 2023.04.14
What is Docker  (0) 2023.04.11