-
[Docker] Docker 개념카테고리 없음 2021. 3. 5. 10:21
Docker Image
Image 는 가상머신에서 사용하는 이미지와 비슷한 역할을 한다
한마디로 어떤 application 을 실행하기 위한 환경을 말하며
이 환경은 파일들의 집합으로 이루어져 있다.
개발자들은 도커에서 application 을 실행하기 위한 파일들을 모아두고, application 과 함께 Image 라는 형태로 만들 수 있다. 그리고 이 Image를 기반으로 application 을 바로 배포할 수 있다.
- Repository : 하나의 Image 를 뜻한다
- Tag : 추가적인 Image의 이름으로, ubuntu:latest 에서 : 뒤에 붙은 말을 뜻한다. 주로 버전을 나타낸다
Docker Hub
Docker에서 제공하는 Image 호스팅 서비스다.
Docker Hub 에는 아주 많은 Image 들이 존재하는데, 이 Image 들은 Docker 사에서 공식적으로 제공하는 Image 와 사용자들이 직접 만들어 올린 Image 로 나눠진다.
이미지를 공유할 수 있는 도커 허브 서비스는 도커가 초반에 자리잡을 수 있도록 중요한 역할을 했다.
Docker Container - 격리된 환경에서 실행되는 프로세스
centos 컨테이너를 실행하는 것은 다음과 같은 두 단계를 거친다.
1. 도커 레지스트리에서 centos 이미지를 풀 받아서 로컬로 다운로드 받는다.
2. 이 이미지를 통해서 컨테이너를 실행한다.
여기서 두번째 단계를 좀 더 자세히 다뤄보자.
앞에서 말했듯이 이미지는 application 의 환경이 구성되어있는 파일의 집합이다.
바로 이 환경위에서 특정한 프로세스를 격리시켜 실행한 것을 Container 라고 부른다.
쉽게말하면,
이미지는 파일들의 집합이고, 컨테이너는 이 파일들의 집합 위에서 실행된 특별한 프로세스다.
이미지를 pull 하고 이 위에서 실행시킨 컨테이너에서 어떤 조작을 하던, 원래의 Image 는 변하지 않는다.
그러나, 어떤 조작을 하고나서 새로운 Image 로 만들 수 있다.
Image 는 위에서 볼 수 있듯이 Layer 가 겹겹이 쌓인 구조로 이루어져 있기때문에
내가 nginx 라는 Image 를 pull 하고 그 위에 source 라는 layer 를 쌓아 새로운 Image ( application ) 를 만들 수 있다.
그리고 이 source 가 수정된경우, web app 이라는 Image 를 통째로 다시 다운받지않고 source 라는 layer 만 다운받는 구조로 이루어져있어 굉장히 효율적인 Image 관리가 가능하다.
댓글