본문 바로가기
Project/CI&CD

DevOps, Docker의 등장과 개념

by rueMi 2024. 1. 17.

Docker의 등장 배경

서버 관리의 어려움

서버를 관리하는 것은 매우 복잡하고 어려운 작업이다. 과거에는 자체 서버를 사용했는데, 버전이 업데이트 되는 등 개발 환경이 바뀌게 된다면 시스템 환경, Dependency, 각종 개발 프로그램 설정 등 많은 것들을 처음부터 다시 설정해야 한다. 이렇게 직접 하다 보면 귀찮기도 하지만 사소한 실수 하나로 프로그램이 꼬일 수도 있다.

DevOps

최근 DevOps라는 개념도 등장하였다.

DevOps는 소프트웨어 개발 (Development) + 운영 (Operations)을 합친 말이다. 소프트웨어 개발자와 정보 기술 전문가 간의 소통, 협업, 통합을 강조하는 개발을 말한다. DevOps의 목적은 간단하다.

 

“빠르게 개발하고, 빠르게 배포하는 것”

 

어떤 문제점을 발견했을 때, 좋은 도구를 사용해서 그 문제를 해결하고 발전시키는 것이 중요하다. 예시로, git, docker, kubernetes 등이 있다.

 

이러한 어려움을 해결해주기 위해 Docker, 도커가 등장했다.


Docker, 도커

Docker는 컨테이너 기반의 오픈소스 가상화 플랫폼이다.

 

다양한 프로그램들과 실행 환경을 컨테이너로 규격화 시켜 프로그램의 배포 및 관리를 단순화할 수 있다. 프로그램 코드 뿐만 아니라 실행에 필요한 모든 dependency들도 컨테이너에 담기 때문에 다른 환경에서도 빠르게 애플리케이션을 실행할 수 있다.

Docker Image, 도커 이미지

docker에서 서비스 운영에 필요한 서버 프로그램, 코드 및 라이브러리, 컴파일된 실행 파일 등을 묶는 형태를 도커 이미지(docker image)라고 한다.

다시 말하면 컨테이너 실행에 필요한 모든 파일과 환경을 가진 것으로, 더 이상 Dependency를 컴파일하거나 설치할 필요가 없는 상태의 파일을 뜻한다.

따라서 이러한 도커 이미지만 있으면 쉽게 원하는 환경이 구축 가능하다.

 

도커 이미지를 실행하면 도커 컨테이너(docker container)가 된다고 볼 수 있다. 도커 이미지는 도커 파일(docker file)로 만들어지는데, 이러한 도커 파일에는 소스코드와 함께 의존성 패키지 등 사용한 설정 파일을 관리하기 쉽게 명시된다.

 

이렇게만 보면 도커는 기존의 가상 머신(Virtual machine)과 매우 비슷하다고 볼 수 있다. 하지만 분명히 차이점이 있다.

가상머신과 도커

왼쪽은 도커, 오른쪽은 가상머신이다

 

가상머신은 하나의 머신을 여러 개의 OS로 분리되어 점유한다. 도커와 같이 하나의 머신 위에서 동작하긴 하지만, 사실상은 다른 머신인 것처럼 각자 OS, 애플리케이션, 라이브러리를 개별적으로 가지고 있기 때문에 하나 당 수 GB를 차지하게 된다. 또한 부팅 하는 데에도 시간이 오래 걸린다.

 

도커는 App layer에서의 추상화이다. 즉, 여러 컨테이너들이 똑같은 하나의 머신 위에서 OS 커널을 공유한다. 이렇게 하나의 머신 위에서 OS 커널을 공유하기 때문에 보통 수십~수백 MB의 작은 크기를 차지한다. 그래서 마치 가벼운 가상머신과 같은 느낌을 준다.

 

그래서 도커가 가상머신보다 더 빠르고, 가볍고 좋다.


참고자료

 

도커(Docker)란 무엇인가? 컨테이너와 가상 머신의 차이점

서버 관리의 어려움 서버를 관리하는 일은 매우 복잡하고 어려운 작업이다. 만약 서버를 개발할 때 개발 환경이 바뀌게 된다면 컴퓨터 세팅이나 프로그램 등을 처음부터 다시 설정해야 한다. 시

code-lab1.tistory.com