[라즈베리파이] Docker를 설치해보자.

NNIJGNUS·2025년 6월 5일
post-thumbnail

앞서 라즈베리파이에 OS를 설치하고, SSH 접속 방법까지 알아보았다.
이번 게시글에서는 Docker를 설치해보도록 해보겠다.

그에 앞서 잠깐! Docker란 무엇일까?

Docker란?

애플리케이션을 컨테이너(container)라는 단위로 패키징하고 실행할 수 있게 해주는 가상화 플랫폼

내가 개발한 애플리케이션을 AWS EC2 서비스를 이용해 배포한다고 가정해보자.
하지만 이 때, 개발환경이 Mac OS인데 Linux 인스턴스를 사용해야 한다면? 혹은 Linux 개발 환경이지만 배포 환경은 Ubuntu라면? 벌써부터 머리가 복잡해진다.

Docker는 환경 일관성을 보장해주며 어떠한 환경에서도 동일한 실행을 보장해준다.

주요 개념

이미지(Image) 실행 가능한 모든 코드를 포함한 애플리케이션 패키지.
컨테이너(Container) 이미지를 실행한 상태. 실제 돌아가는 프로그램.

Docker와 VM

가상화를 이야기할 때 Docker와 함께 빠지지 않고 거론되는 VM(Virtual Machine)이다.
VMDocker같은 컨테이너와 어떠한 차이점이 있을까?

가상머신(VM)

VM, 가상 머신은하드웨어 수준의 자원 격리 및 가상화를 제공한다. 즉, 가상 머신들은 서로가 독립적인 컴퓨터인 것처럼 작동한다.

가상 머신은 각각의 운영 체제가 별도로 존재하며, 각각의 운영체제는 하이퍼바이저에 의해 공동의 하드웨어 자원을 할당받는다.

이러한 하드웨어 수준의 가상화는 높은 격리성을 제공하고 각각의 가상 머신은 다른 운영체제를 실행할 수 있지만, 큰 오버헤드로 속도가 느리고 용량을 많이 차지한다.

컨테이너

컨테이너는 동일한 커널을 공유하며 특정 프로세스를 실행하는 데 필요한 자원만을 격리한다. 즉, 애플리케이션과 그 의존성만을 포함하며, 운영체제는 호스트와 공유하게된다.

컨테이너는 운영체제의 커널을 공유하며, 가상머신보다 더 적은 리소스를 요구한다. 또한 독립적으로 실행할 수 있기 때문에 실행 시간이 빠르고 동일한 컨테이너 이미지를 어디서나 실행할 수 있어 환경 설정이 일관되게 유지된다.

마지막으로 Docker, Kubernetes 등의 도구를 이용해 컨테이너를 쉽게 스케일링할 수 있다.

하지만 커널을 공유하는 컨테이너의 특성상, 가상 머신에 비해 격리성이 떨어져 보안상 위험이 있을 수 있고, 호스트의 OS에 의존적이므로 특정 운영체제의 커널 기능에 의존하는 애플리케이션은 실행할 수 없다.

여러 개의 독립적인 서비스를 각기 다른 컨테이너로 배포하는 마이크로서비스 아키텍처를 구성할 때 유리하다.

Docker와 MSA

전통적인 애플리케이션은 모놀리식(Monolithic) 아키텍처를 따른다. 즉, 애플리케이션이 하나의 큰 덩어리로 되어 있다.
개발하기 용이하고 배포가 간편하다는 장점도 있지만, 만약 하나의 기능을 수정하더라도 배포는 전체가 이루어져야 한다.

최근에는 애플리케이션을 작고 독립적인 서비스로 분리해서 개발하는 MSA(Microservice Architecture)를 사용하는 경우가 많다. 예를 들어 회원 서비스, 주문 서비스, 결제 서비스 등을 각각 독립적으로 개발 후 배포하는 방식이다.

이런 MSA 구조의 특성상 Docker가 필수적으로 사용된다.

각 마이크로서비스를 컨테이너로 분리하여 실행 가능
이 때, 각 마이크로서비스는 서로 다른 언어나 환경을 필요로 할 수 있으므로 독립된 환경을 제공할 수 있음

Docker 설치

Docker의 공식 문서를 참고하여 설치하면 된다.

# 기본 패키지 설치 및 키링 디렉터리 설정
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings

# Docker GPG 키 다운로드 및 권한 설정
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Docker 리포지토리 등록
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

# Docker 최신 버전 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 테스트 이미지 실행
sudo docker run hello-world

설치가 정상적으로 완료되었다면, 위와 같은 화면이 출력될 것이다.

0개의 댓글