본문 바로가기
개발 - Coding/Infra

도커 이미지와 컨테이너

by dev_jinyeong 2022. 12. 11.

도커 이미지와 컨테이너

이미지와 컨테이너 개념

도커 이미지와 컨테이너의 관계

도커 이미지란 컨테이너를 만들기 위한 설계도 역할을 하는 것이다.

이미지의 내용대로 컨테이너를 만들 수 있으므로 새로운 컨테이너를 만들 때 편리하다.

 

반대로 컨테이너로도 이미지를 만들 수 있다.

필요한 컨테이너 상태를 이미지화하여 배포할 수 있으므로 컨테이너 생성과 복제가 편리하다.

따라서 같은 내용의 컨테이너를 여러 개 만들 때도 사용할 수 있다.

도커 이미지를 이용해 다수의 컨테이너 생성

도커 이미지를 이용해 컨테이너를 여러 개 생성할 수 있으므로 다른 도커 위에서 같은 컨테이너 생성도 가능하다.

즉, 이미지를 공유할 경우 나와 같은 환경을 배포한 것과 같은 효과가 생긴다.

따라서 다른 사람들이 만든 이미지를 받아 내가 활용할 수 있다.

다른 도커에서도 동일한 컨테이너 생성 가능

이런 식으로 도커 이미지를 공유하는 도커 허브라는 사이트가 있다.

도커 허브에서 다른 개발자들이 생성한 도커 이미지를 이용해서 쉽게 환경을 세팅할 수 있다.

도커 허브

https://hub.docker.com

 

Docker Hub Container Image Library | App Containerization

Deliver your business through Docker Hub Package and publish apps and plugins as containers in Docker Hub for easy download and deployment by millions of Docker users worldwide.

hub.docker.com

이런 것이 쉽게 가능한 이유는 도커 개요 편에서 설명했던 "컨테이너 속 Linux OS 비슷한 것"과 연관되어 있다.

도커에서는 OS의 핵심인 커널 부분을 물리적 서버에 맡기기 때문이다.

따라서 컨테이너 내부에서 동작하는 것은 엄밀히 말해서 OS라고 할 수 없다.

OS 핵심인 커널을 외부에 위임하기 때문에 컨테이너 자체는 가벼워질 수 있다.

도커 커널 위임

도커 컨테이너 생애주기

도커 컨테이너는 쉽게 만들 수 있으므로 일회용품처럼 쓰고 버리는 방식으로 사용한다.

컨테이너는 보통 여러 개를 운영하는 것이 보통인데, 하나씩 업데이트하는 것보다 새로 생성하는 것이 편리하기 때문이다.

다른 것들의 생애주기와 비슷하게 컨테이너 또한 생성, 실행, 종료, 폐기 과정을 따른다.

 

이때 컨테이너 내부 정보가 분실될 수 있으므로 컨테이너 외부에 데이터베이스를 따로 두고 연결해서 사용한다.

이렇게 사용하면 컨테이너를 삭제하고 다시 생성하는 데 유용하다.

데이터베이스와 컨테이너 연결

도커 특징과 활용

독립된 환경 제공

독립된 환경을 제공하는 것에 대한 장점은 전 편에서 설명되어 있다.

또한 개발 환경과 운영 환경을 쉽게 세팅할 수 있다.

개발 환경을 동일하게 세팅하면 팀 프로젝트에서 개발 환경이 달라 생기는 문제점들을 예방할 수 있다.

운영 환경을 동일하게 세팅하면 운영 환경과 개발 환경이 달라 생기는 문제점들을 예방할 수 있다.

또한 격리된 환경을 이용해 새로운 버전에 대한 테스트도 가능하다.

환경을 이미지화할 수 있음

컨테이너를 이미지화하고, 이미지를 이용해 컨테이너를 생성함으로써 환경 설정이 쉽고 빨라진다.

다른 사람이 이미 생성한 이미지를 이용해 쉽게 환경을 설정하고, 내가 만든 환경을 다른 사람과 쉽게 공유할 수 있다.

커널이 포함되지 않아 컨테이너가 경량화됨

도커 자체를 경량화된 상태로 사용할 수 있다.

VMWare 등 가상 환경을 구축하는 것보다 훨씬 비용이 적다.

Linux에 의존성이 커짐

도커 자체가 Linux 기반이고, 컨테이너 내부 프로그램 또한 Linux 기반이기 때문에 Linux 기준으로 세팅되어야 한다.

물리 서버의 안정성이 중요해짐

한 물리 서버 위에 여러 개의 컨테이너를 띄우는 것이므로 물리 서버가 장애가 생기면 모든 컨테이너에 문제가 생길 수 있다.