안녕하세요
이번 시간에는 도커의 개념을 알아보고 설치해보려고 합니다.
먼저 도커가 무엇인지 알아봐야겠죠?
Docker란?
도커(Docker)는 리눅스 컨테이너에 여러 기능을 넣어 애플리케이션을 컨테이너로 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트입니다. 도커는 Go 언어로 작성되어 있고 꾸준히 개발되고 있습니다. 기존 가상화 방식과는 다르게 도커 컨테이너는 성능의 손실이 거의 없기 때문에 클라우드 인프라 솔루션으로서 많은 사람들에게 주목받고 있습니다.
가상 머신과 도커 비교
왼쪽에 보이는 그림은 기존의 가상화 기술인 하이퍼바이저를 이용하여 여러 개의 운영체제를 하나의 호스트에서 생성하여 사용하는 방식입니다. 이러한 여러 개의 운영체제를 VM(Virtual Machine) 단위로 구분하고 VM에 운영체제(Ubuntu, CentOS 등)를 설치하여 사용합니다. 하이퍼바이저에 의해 생성되고 관리되는 운영체제를 게스트 OS라고 합니다.
각 게스트 운영체제는 다른 게스트 운영체제와 독립된 공간과 자원을 할당받아 사용합니다. 하지만 이 방식은 Guest OS는 운영체제, 라이브러리, 커널을 모두 포함하기 때문에 이미지로 만들었을 때 이미지의 크기가 커서 사용하기 무겁습니다.
그에 반해 도커 컨테이너는 가상화된 공간을 생성하기 위하여 프로세스 단위의 격리 환경을 만들고 호스트의 커널을 공유해 사용하며 라이브러리와 실행 파일만 존재하기 때문에 이미지로 만들었을 때 이미지의 크기가 작아 사용하기 가볍습니다.
도커를 사용하는 이유
도커는 컨테이너 가상화 방식에서 표준처럼 사용되고 있습니다. 쿠버네티스와 같은 오픈소스 프로젝트에서 도커를 기준으로 개발하고 있고 많은 회사들이 도커 컨테이너를 사용하고 있습니다.
앞서 컨테이너에 대해서 얘기를 했습니다. 컨테이너 방식이 뭔지에 대해서 알아볼 필요가 있습니다.
위 그림의 예시처럼 "이사"를 예시로 들어보겠습니다.
우리가 이사가기 위해서는 보통 집 안에 있는 가구를 하나씩 꺼내서 트럭에 싣고 이사할 장소에 갖다 두는 방식입니다.
컨테이너 방식은 모든 가구가 들어 있는 내 방 자체를 이동시키는 방식이라고 생각하시면 이해하기 쉬울 것 같습니다.
따로 내가 이사할 장소에 도착해서 뭔가를 세팅하지 않아도 방 자체를 옮겨다놨기 때문에 따로 내 방을 건들지 않아도 사용할 수 있습니다.
우리는 이 컨테이너라는 내 방을 도커 이미지라는 파일로 만들어서 다른 서버에서도 내 방을 손쉽게 사용할 수 있게 됩니다.
1. 개발과 배포의 편리성
여러분이 컨테이너 내부에서 작업을 마친 뒤 서비스 운영 환경에 배포하려고 할 때 해당 컨테이너를 도커 이미지로 만들어서 운영 서버에서 받기만 하면 됩니다. 이 말 뜻은 운영 서버에서 컨테이너를 실행하기 위해 패키지, 라이브러리를 설치하는 등 의존성을 걱정할 필요가 없다는 뜻입니다. 서비스 개발 환경을 다른 서버에서도 컨테이너로 똑같이 복제할 수 있기 때문에 개발과 운영 환경을 통합할 수 있습니다.
2. 애플리케이션의 독립성과 확장성 증가 모놀리스 구조 vs 마이크로서비스 구조
여러 모듈이 하나의 프로그램 안에서 동작하는 방식을 모놀리스 구조의 애플리케이션이라고 합니다. 규모가 크지 않은 소규모 서비스에서는 모놀리스 구조의 애플리케이션을 사용하기도 합니다. 하지만 모놀리스 구조의 서비스가 규모가 커지고 기능이 복잡해지면 모듈 간의 의존성이 생기게 되고 이러한 의존성은 모듈 간 영향을 줍니다. 모듈을 추가할 때마다 이러한 의존성 때문에 확장이 어렵고 유연한 개발이 어렵게 되는데 이러한 모놀리스 방식을 대체하기 위해 나온 개념이 마이크로 서비스 구조(MSA)입니다. 마이크로 서비스 구조가 떠오르면서 애자일 방법론 또한 같이 떠오르게 되었습니다.
마이크로 서비스 구조는 독립성을 띄며 언어에 종속되지 않고 빠르게 대응할 수 있습니다. 또한 모듈의 관리가 쉬워진다는 장점 역시 가지고 있습니다. 컨테이너는 앞선 가상화 방식들과 다르게 빠르고 경량화되어 있어 마이크로 서비스 구조에서 많이 사용되는 가상화 기술입니다.
리눅스에서 도커 엔진 설치하기
https://docs.docker.com/engine/install
Ubuntu
1. 패키지를 업데이트하고 설치
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
2. 도커 공식 GPG 키 추가
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
3. 리포지토리 설정
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4. 도커 엔진 설치
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
CentOS, RHEL
1. 패키지를 설치하고 저장소 설정
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
2. 도커 엔진 설치
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Windows, MacOS
https://www.docker.com/get-started/
설치 확인하기
docker --version
docker info
도커를 설치하셨다면 도커가 정상적으로 설치되었는지 확인해보세요.
이번 시간에는 도커의 개념과 사용 이유 그리고 도커를 운영체제 별로 설치하는 방법에 대해서 알아봤습니다.
감사합니다
'Container > Docker' 카테고리의 다른 글
[Docker] Docker Compose를 이용한 손 쉬운 배포 환경 구성하기(Ubuntu, Flask, Nginx, uWSGI, MySQL) (0) | 2023.07.09 |
---|---|
[Docker] 도커에서 컨테이너 다루기 실습(생성, 확인, 삭제) (0) | 2022.08.18 |
클라우드, 개발, 자격증, 취업 정보 등 IT 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!