[Docker] 컨테이너의 개념( 따라하며 배우는 도커와 CI환경)

su_y2on·2022년 2월 8일
1

Docker

목록 보기
1/12
post-thumbnail

컨테이너의 개념 🚚

우리가 어떤 프로그램을 설치하고 실행하고 싶을 때 필요한 환경이 충분히 갖춰지지 않아서 에러가 나 실행에 어려움을 겪기도 합니다. 비슷한 예로 프로젝트를 github에 올릴 때 실행에 필요한 패키지들은 다 올리지 않고 requirements.txt에 정리해놓습니다. 그러면 프로젝트를 내려받은 사람은 그 텍스트파일에 있는 패키지들만 다운 받으면 프로젝트를 실행할 수 있는 환경을 만들 수 있습니다.

컨테이너도 이와 비슷하게 프로그램을 돌리기위한 환경을 통째로 가지고 있습니다. 컨테이너는 이미지를 통해서 만들어 집니다. 이미지는 컨테이너를 만들기 위한 설계도라고 생각하면됩니다. 또는 클래스(이미지)와 인스턴스(컨테이너)의 관계와 비슷합니다.

이미지에는 컨테이너를 만들기 위한 여러가지 정보들을 담고 있습니다. 대표적으로 시작시 실행할 명령어와 필요한 파일 스냅샷이 있습니다. 여기서 파일 스냅샷은 실행전 필요한 파일들이라고 보시면 됩니다.

이렇게 만들어진 컨테이너는 실행 명령어를 통해 프로그램을 정상적으로 실행할 수 있게 됩니다.







이미지로 컨테이너 만들기

직접 이미지로 컨테이너가 만들어지는 과정을 통해 도커가 어떻게 작동하는지 정리해보겠습니다. 참고로 도커는 일단 기본적으로 아래와 같이 구성되어있습니다.

컨테이너를 만드는 명령어는 docker run <이미지> 입니다. 지금은 hello-world라는 이미지로 컨테이너를 만들어보겠습니다.

> docker run hello-world

명령어는 기본적으로 docker client 에게 보내는 것입니다. 따라서 도커가 켜져있어야 동작합니다. client는 docker server에게(daemon)이 명령어를 전달합니다. 그럼 docker server는 먼저 hello-world라는 이미지를 로컬에서 찾습니다. 처음쓰는 이미지기 때문에 로컬에서 찾는 것을 실패합니다.

그러면 docker hub라는 공동저장소로 갑니다. 여기에는 많은 사람들이 만들어놓은 이미지들이 공유되는 곳입니다. 여기서 hello-world찾아옵니다. 그러면 그 이미지를 로컬 캐시에 저장해놓고 컨테이너를 만듭니다

만약 이 명령어를 다시 실행하면 이전보다 훨씬 빨리 컨테이너를 생성합니다. 이미지가 로컬 캐시에 저장이 되어있기 때문입니다.

0개의 댓글