목차
- Docker Image
- Docker File
- Docker Hub & Docker Registry
- Docker Architecture
컨테이너는 가상화 기술 중 하나로 대표적으로 LXC(Linux Container)가 있다. 기존 OS를 가상화 시키던 것과 달리 컨테이너는 OS레벨의 가상화로 프로세스를 격리시켜 동작하는 방식으로 이루어진다.
Docker Image
Docker Image란 컨테이너를 실행할 수 있는 실행파일, 설정 값들을 가지고 있는 것이라고 생각하면 된다.
그림과 같이 Image를 컨테이너에 담고 실행을 시킨다면 해당 프로세스가 동작하게 되는 것이다.
그럼 어떻게 이미지가 동작하는지 알기 위해선 어떻게 이미지가 만들어지는지 먼저 알아보도록 하자.
다음 그림을 보면 ubuntu 이미지를 만들기 위해 Layer A,B,C가 들어간다. 그럼 nginx 이미지를 만든다고 생각했을땐 어떻게 될까?
이미 Layer A,B,C로 만들어진 ubuntu 이미지를 베이스 이미지로 사용하여 베이스 이미지에 nginx만 더하게 된다.
그렇다면 실질적으로 Layer A, B, C, nginx 가 더해진 것이지만 과정은 unbuntu + nginx가 더해진 것이다.
그렇다면 web app 이미지를 만들려고 할 땐 어떻게 될까?
ubuntu 이미지에 nginx를 올리고 web app을 올리는 것이 아닌 이미 만들어진 nginx 베이스 이미지에 web app을 올려 이미지를 만들게 된다.
도커 레지스트리에는 사용자가 사용할 수 있도록 데이터베이스를 통해 Image를 제공해주고 있다.
누구나 이미지를 만들어 푸시할 수 있으며 푸시된 이미지는 다른 사람들에게 공유가 가능하다.
이제 이미지가 어떻게 만들어지는지 알았다면 실제로 Image를 만들어보는 Docker File에 대해 알아봅시다.
Docker File
뒤에서도 설명을 하겠지만 Docker Image들을 저장하고 배포하는 Docker Hub는 정말 잘 활성화되어 있다. 이미 여러 회사들은 소프트웨어를 Docker Hub를 통해 배포하기 시작했고 우린 Docker hub에서 image를 pull하여 간단하게 컨테이너에 넣어 사용할 수 있다.
하지만 이는 무엇인가 부족해 보인다.
만약 배포판이 없다면? 배포판 보다 더욱 보완하고 싶다면? 그럴 때 사용할 수 있는 것이 Docker Fille이다.
Docker File은 이미지 생성 출발점으로 이미지를 구성하기 위한 명령어들을 작성하여 이미지를 구성할 수 있다.
그 뜻은 Docker File을 읽을 수만 있다면 해당 이미지가 어떻게 구성되어 있는지도 알 수 있다는 의미가 된다.
Docker Hub & Docker Registry
Docker Hub에서는 이미지를 저장하고 관리해준다. 위에서도 많은 회사들이 Docker로 소프트웨어를 배포하기 시작했고 공개이미지들을 공유할 수 있다. Docker Hub를 이용하면 손쉽게 imaer를 pull 받아 컨테이너에 적용시킬 수 있다. (사실 GitHub와 동일하게 생각해도 무관함)
그렇다면 Docker Registry는 무엇일까?
Docker Registry는 Docker 보관소 정도로 보면 된다. 누구나 이미지를 push할 수 있고 다운로드할 수 있다.
이미지는 static한 상태로 되어있다. 이것을 실행하려면 container로 바꾸어주어야 한다.
Docker Hub처럼 공개된 방식이 아닌 비공개적으로 격리된 저장소를 구축할 수 있다.
다음은 Docker Image를 Pull받기 위한 url 이다. 그림과 같이 앞에있는 url을 적지 않으면 default로 Docker Hub에서 Image를 pull 받게되고 url을 적어준다면 사설 저장소에서 이미지를 받을 수 있다.
Docker Architecture
'🚦 Server > Docker' 카테고리의 다른 글
Docker 로 python 실행하기 (0) | 2021.01.08 |
---|---|
Docker - image가 저장되는 방식 (0) | 2021.01.08 |
Docker - 라이프 사이클, 명령어 (0) | 2021.01.07 |
Docker 설치 - Mac (0) | 2021.01.07 |
Docker 란? (0) | 2021.01.06 |