본문 바로가기
Study/DevOps

[Docker] Docker는 무엇이고, 왜 사용해야 할까?

by DevJaewoo 2022. 9. 6.
반응형

Docker LOGO

Intro

요즘 개발 공부를 하면서 개발 관련 프로그램을 설치할 일이 많아졌다.

근데 다른 블로그나 설치 및 사용 튜토리얼들을 보면 Install on Docker, docker pull처럼 Docker라는 단어가 자꾸 보인다.

이게 대체 뭐길래 사람들이 이렇게 많이 사용하나 싶어서 사용해봤더니 엄청 편해서 글로 정리해봤다.


Docker란?

리눅스에서 다양한 이미지들을 격리된 환경인 컨테이너로 실행하고 관리해주는 도구이다.

Docker Hub라는 곳에서 다른 사람들이 올려둔 이미지를 받아 로컬에서 실행할 수도 있고,

필요한 이미지를 직접 빌드해서 다른 사람들한테 배포할 수도 있다.


가상머신(VM)과의 차이점

VM과의 차이점

가상머신은 가상화된 하드웨어를 만들고 그 위에 설치하고자 하는 OS가 올라가는 반면, 컨테이너는 OS가 가상화된다.

OS까지 분리된 것이 아니기 때문에 OS를 일일이 설치하지 않아도 돼서 용량을 덜 차지하고 빠르지만,

OS까지 분리되지 않았기 때문에 컨테이너가 해킹당하면 호스트 OS도 위험해질 수 있다.

 

또한 VM은 각 OS별로 자원을 일정량 만큼 미리 할당하여 자원에 제한이 걸리고 낭비도 되는 반면, 컨테이너는 자원을 미리 할당하지 않기 때문에 자원을 필요한 만큼만 유동적으로 사용한다.


Docker의 장점

소프트웨어 설치

docker pull 명령어로 Docker Hub에 등록되어있는 공식 이미지를 간단하게 다운받고 실행할 수 있다.

 

PostgreSQL, Redis, RabbitMQ를 설치해야 하는 상황이라고 가정했을 때, 원래는 각 프로그램의 홈페이지에서 설치 파일을 다운로드 받고, PC에 설치하고 해야 하지만 Docker를 사용하면 아래의 명령어만 입력하면 다운받을 수 있다.

docker pull postgres
docker pull redis
docker pull rabbitmq:3

 

배포 및 운영 표준화

개발환경을 이미지로 빌드해두면 개발자마다 패키지 버전, Dependency가 달라 문제가 생기는 일이 없어진다.

또한 배포해야 할 컨테이너를 이미지로 빌드하여 AWS나 운영서버에 보내면 개발 서버와 동일한 환경으로 배포할 수 있다.

 

비용 절감

앞서 설명했듯이 가볍고 자원을 효율적으로 사용하기 때문에 서버 운영 시 들어가는 비용도 감소된다.

 

Kubernetes를 통한 컨테이너 관리

Docker와 같은 컨테이너들을 관리해주는 쿠버네티스라는 툴이 있다.

쿠버네티스를 사용하면 서버에 사용자가 늘어났을 때 컨테이너를 추가적으로 생성하고, 컨테이너가 죽으면 다시 살리고, 서버 배포 시 여러 컨테이너 중 하나씩 배포해 무중단배포를 할 수 있게 해주는 등 Docker 자체로도 얻는 이점이 크지만 쿠버네티스를 사용해서 더 많은 이점을 챙길 수 있다.


참고자료

반응형