[Docker] 도커 이미지

옹심이·2024년 12월 14일
0
post-thumbnail

이미지

이미지란 프로그램이 실행되기 위한 모든 환경이 포함 되어 있는 파일 시스템이다.

서버에서 프로그램을 실행 시키려면 몇 가지 요소가 필요하다.

첫 번째는 소프트웨어가 하드웨어의 리소스를 안정적으로 사용할 수 있도록 도와주는 OS

두 번째는 소프트웨어 실행을 위해 필요한 패키지, 라이브러리, 런타임 언어 등 의존을 위한 구성 요소

세 번째는 실행 시킬 프로그램이다.

그런데 NginX 서버를 컨테이너로 실행할 때는 이러한 요소들이 필요하지 않다. 어떻게 바로 실행이 가능한걸까? 이유는 NginX 이미지를 통해 컨테이너를 실행했기 때문이다.

이미지는 파일 시스템의 특정 지점을 저장해 놓은 압축파일로서 소프트웨어가 실행되기 위한 모든 요소를 미리 준비해서 압축한다. 이는 게임 도중 save를 하여 재시작 지점을 저장해 두는 것과 같다.

NginX는 NginX의 개발사에서 OS위에 필요한 구성 요소들을 미리 준비하고 NginX를 실행할 준비가 되어 있는 상태를 이미지로 저장 후 공유한다. 그리고 우리는 Docker run 명령어에서 nginx라는 이름의 이미지 이름을 입력하면 그 이미지를 다운 받아서 격리된 공간에 컨테이너가 실행된다. 컨테이너 실행과 동시에 이미지 안에 있는 NginX 프로그램이 함께 실행되는 것이다.

이미지와 비슷하게 가상 머신에도 스냅샷이라는 기능이 있다. 하지만 이미지의 압축 파일 사이즈가 훨씬 작기 때문에 인터넷을 통해 공유하고 저장하기 수월하다는 장점이 있다.

컨테이너와의 관계

이미지와 컨테이너의 관계는 프로그램과 프로세스의 관계와 비슷하다.

이미지는 프로그램 실행을 위해 필요한 모든 환경이 포함된 파일 시스템이며, 이 이미지를 실행한 것이 컨테이너이다

이미지인 상태에서는 오직 디스크 공간만 차지하고, 컨테이너로 실행하면 CPU와 메모리를 사용하게 된다.

프로세스와 차이점이 있다면 컨테이너는 가상화 기술이기 때문에 이미지를 컨테이너로 실행할 때는 격리된 공간이 만들어지고, 그 공간에서 이미지에서 사전에 지정된 프로그램이 프로세스로 실행된다.

정리하면, 이미지를 컨테이너로 실행시키는 것은 이미지에 저장된 모든 요소들을 격리된 공간으로 만든 후 격리된 공간에서 프로그램을 프로세스로 실행시키는 단계를 거치는 것이다.

실습

이미지 조회

docker image ls

하나의 이미지로 여러 컨테이너 실행

docker run -d --name [컨테이너 이름] [이미지 이름]

실행중인 컨테이너 삭제

docker rm -f [이미지 태그]

0개의 댓글