[Docker] Docker이해하기3. 도커 이미지(image)
Operating System/Docker

[Docker] Docker이해하기3. 도커 이미지(image)

 

컨테이너, 이미지 뜻이 뭐지?

컨테이너는 앞서 말했듯 내가 사용하고 싶은 실험 환경이 구축되어 있는 프로세스라고 생각하면 된다.

쉽게 설명하면  나는 어떤 2가지 프로젝트를 진행 중이다. 

1. Linux(Ubuntu) 환경의 Python2, pytorch(1.6.0), numpy가 필요한 프로젝트 1

2. Linux(Centos)환경의 Python3, pytorch(1.7.1)가 필요한 프로젝트 2

이 두가지가 있다고 하고, 또 이 프로젝트들을 배포해야 한다고 할 때, 각 프로젝트에 필요한 실험 환경을 각 프로젝트의 팀원들과 공유해야 한다면, 같은 실험 환경 구축할 수 있도록 이 컨테이너를 이미지를 통해서 배포하고 실행하기도 하고,  본인 스스로도 각 컨테이너에서 서로 독립된 공간에서 버전 충돌 없이 깔끔하게 프로젝트를 진행할 수 있는 것이다. 마치 사무실이 2개인 것처럼 ( 마치 각 프로젝트에 따른 개인 컴퓨터가 2대인 것처럼!!!!)

정리하자면,

이미지: 1번과 2번처럼 어떤 구성된 환경상태를 저장해놓은 형태 (어떤 파일 집합)

컨테이너: 이 이미지의 환경 위에서 특정한 프로세스를 격리시켜서 실행한 것

 

마치, 파이썬에서 이미 짜여져있는 다른 Library를 Import 해서 쓰는 경우 

다른 사람이 짜놓은 모듈(Library)이 이미지  개념에 해당하고, 그 모듈을 Import 해서 내 모듈을 작성하고 있는 이 공간이 컨테이너 같은 느낌으로 이해하면 조금 이해가 수월한 것 같다.

 

위 프로젝트 중, 1번 프로젝트를 진행하고 싶다면 나는 1번 환경을 구축해야 한다. 즉 1번 컨테이너를 실행해야 한다.

도커를 사용하여 컨테이너를 실행하려면 아래  두 가지 단계가 존재한다.

  1. 도커 레지스트리(공식 저장소)에서 Ubuntu 이미지를 풀 받아서 로컬 다운로드 -> 리눅스의 apt와 같은 역할이라고 이해하면 됨
  2. 이 이미지를 통해서 컨테이너를 실행

위 그림처럼, 베이스가 되는 이미지를 다운 받아 컨테이너화 하고 필요한 라이브러리들을 더 설치하고, 필요한 실험환경이 추가되거나 변동사항이 있으면 다시 이미지화하여 배포하는 형태로 사용한다. 

이미지와 컨테이너의 개념을 확실히 하고, 이미지를 직접 다운받아 컨테이너화 시키는 작업에 대해서는 직접 해본 기록을  따로 포스팅하도록 하겠다.