Search

[Docker] 도커란? (컨테이너, 이미지..)

Docker란?

도커(docker)는 애플리케이션을 컨테이너라는 독립된 공간에서 실행 가능하도록 하는 플랫폼이다.
도커를 사용하는 이유는 아래와 같이 여러 이유가 있다
1.
환경 차이
개발자 A → Window에서 개발
개발자 B → MacOS에서 개발
서비스 기동 → Linux
위와 같은 상황은 매우 흔하게 볼 수 있는 상황일 것 이다. 그러면 여기서 발생할 수 있는 문제가
“ 내 컴퓨터에서는 잘 됐는데
인 상황이 발생 할 수 있다. 개발 환경마다 환경 변수가 다르고 라이브러리 설치 경로나 방식이 달라서 발생할 수 있는 이슈이다.
도커를 사용하면 애플리케이션 + 실행 환경을 하나의 컨테이너로 포장하기 때문에 어디서든 동일한 실행 결과를 확인 할 수 있다.
2.
빠르고 쉽게 테스트 환경 구성
도커를 사용하지 않고 테스트 DB를 새로 구성한다고 가정하면, DB 설치를 위한 서버 설치부터 시작해서 DB를 수동으로 설치하는 일련의 과정을 겪을 것 이다.
하지만 도커를 사용한다면
docker run -d -p 3306:3306 mariadb:latest
Bash
복사
이런 명령어 한 줄이면 최신버전의 MariaDB가 실행된다.
모든 환경을 쉽고 빠르게 구성하고, 간단하게 바로 삭제가 가능하다.
3.
버전 관리
밑에서 설명하겠지만 이미지라는 개념을 통해 도커는 버전별로 관리가 용이하다.
특정 버전의 이미지를 사용하여 과거의 상태를 재현하는 것이 가능하며,
문제가 생기면 이전 이미지로 쉽게 롤백하는 것이 가능하다.
등 여러가지 이유가 있지만 진짜 현실적인 이유는
개발에서 배포까지의 고통을 줄이고, 빠르고 일관되게 운영하기 위한 도구이다.

Docker Image

도커 이미지컨테이너를 만들기 위한 설정과 실행 환경이 담기 설계도이다. 이미지는 실행 가능한 코드 뿐만 아니라 라이브러리, 환경 변수, 설정 파일 등이 포함되어 있다.
도커 이미지읽기전용이면서, Docker Hub같은 저장소에 업로드해서 관리가 가능하다는 특징이 있다.

Docker Container

도커 컨테이너는 도커 이미지를 기반으로 실행되는 환경이다. 이미지의 내용을 메모리에 올려서 격리된 환경에서 실행되며, 실제 애플리케이션이 돌아가는 공간이다.
격리된 환경이란 호스트 OS와 커널은 공유하지만 파일 시스템, 네트워크, 프로세스 등은 완전히 구분되어 있다.
즉 내 PC에서 실행중인 MariaDB와 컨테이너 안의 MariaDB는 하나의 연관도 없는 서로 각자 동작하는 프로세스인 것이다.
컨테이너는 아래와 같은 특징이 있다.
1.
가벼움
가상 머신처럼 전체 운영체제를 포함하지 않기 때문에 메모리, 디스크, CPU 사용량이 훨씬 적으면서 비교적 가볍다는 특징이 있다.
2.
격리
각 컨테이너는 자기만의 네트워크 인터페이스를 가지기 때문에 각 컨테이너는 자기만의 IP를 가지게 된다. 그리고 서로 다른 컨테이너간의 통신도 가능하며, 각 컨테이너는 독립적으로 분리된 환경에서 실행된다는 특징이 있다.
3.
호스트OS와 리소스 공유
컨테이너는 호스트 OS와의 리소스(사진, 파일 등..)도 공유가 가능하다.