Docker란 컨테이너라는 단위로 서비스를 모듈화하여 관리, 확장 등을 할 수 있는 오픈 소스 프로젝트입니다. 독립된 프로세스 및 네트워크를 컨테이너에 격리하여 해당 컨테이너 내부에서만 서비스가 동작할 수 있도록 합니다.
기존에 사용하던 가상 머신 방식처럼 독자적인 공간에서 운영되는 것은 유사하지만, 가상 머신은 항상 게스트 OS를 설치하고, 그 위에서 서비스를 구축해야 하다 보니 실제 장치보다는 속도가 느릴 수밖에 없었습니다.
이를 보완할만한 기술로 리눅스 커널 컨테이너가 있었고, 해당 방식을 사용한 프로젝트 중 Docker가 사실상 업계 표준이 되었다고 합니다.
이 글에서는 Docker를 사용해보는 것을 슬로그 방식으로 작성해보려고 합니다.
참고 자료
1개의 좋아요
컨테이너에 대해 부연 설명
가상 머신의 경우, 완전한 컴퓨터처럼 동작하기 때문에 호스트 OS와 별개로 가상 머신의 OS를 설치하는 과정이 필요합니다. 그렇기 때문에 호스트 컴퓨터에서 제공하는 가상화 기술을 토대로 가상 머신 OS를 구동하는 과정을 거치게 됩니다.
호스트 컴퓨터 > 가상화 기술 > 가상 머신 OS > 응용프로그램
위의 순서으로 동작하다 보니 사용은 편할지 몰라도 성능은 떨어질 수밖에 없었습니다.
반면 컨테이너 기술의 경우, 위에서 잠깐 설명한 것처럼 게스트 OS를 설치하지 않고도 운영을 위한 응용 프로그램이나 라이브러리 등을 격리해서 관리할 수 있도록하는 기술입니다. 별도의 OS를 거치지 않고 호스트 OS와 자원을 공유하다 보니 용량을 줄일 수 있고, 빠르게 동작할 수 있습니다.
호스트 OS > 컨테이너 > 응용 프로그램
Docker는 클라이언트-서버 아키텍쳐를 사용하고 있고, 대략 아래와 같이 구성되어 있습니다.
(출처:
What is Docker? | Docker Docs )
도커 데몬(Docker Daemon): Docker API 요청을 듣고 이미지, 컨테이너, 네트워크, 볼륨과 같은 Docker 객체를 관리
도커 클라이언트(Docker Client): docker run
과 같은 Docker API 명령어를 이용해 도커 데몬과 상호작용할 수 있음
도커 데스크톱(Docker Desktop): 도커를 쉽게 사용할 수 있도록 제공하는 애플리케이션, 도커 데몬 등의 기능을 포함하고 있고, 간단한 GUI를 통해 직접 컨테이너, 애플리케이션 및 이미지를 관리할 수 있음
도커 레지스트리(Docker Registry): 도커 이미지의 저장소, 도커 허브는 공개 레지스트리로 기본적으로 도커 허브에서 이미지를 찾음
도커 객체(Docker Object): 이미지, 컨테이너, 네트워크, 볼륨, 플러그인 및 기타 객체를 생성하고 사용하는 것
이미지(Images): 독커 컨테이너를 만들기 위한 지침이 포함된 읽기 전용 템플릿
컨테이너(Containers): 이미지의 실행 가능한 인스턴스
대략 어떤 방식으로 동작하는 지 확인했으니 이제 실제로 동작하는 Docker를 구성해보겠습니다.
Docker는 CLI 버전 외에 GUI 버전도 제공해주고 있습니다. 위에서 언급한 도커 데스크톱입니다. 데스크톱은 윈도우, 맥, 리눅스을 지원하고 있습니다.
일단 CLI 버전으로 진행해보겠습니다.
1개의 좋아요
저는 우분투 환경에서 진행했습니다. 각 환경마다 명령이 다를 수 있으니 아래 공식 문서를 참고해주세요.
Learn how to choose the best method for you to install Docker Engine. This client-server application is available on Linux, Mac, Windows, and as a static binary.
Docker 설치 과정
Docker apt
저장소 설정
# 도커 공식 GPG 키 추가:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# apt 소스에 저장소 추가:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /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
특정 버전 설치
# 사용 가능 버전 목록 확인:
apt-cache madison docker-ce | awk '{ print $3 }'
결과
5:27.4.0-1~ubuntu.24.04~noble
5:27.3.1-1~ubuntu.24.04~noble
...
VERSION_STRING=5:27.4.0-1~ubuntu.24.04~noble
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
Docker 정상적으로 설치되었는지 확인
docker --version
부팅할 때 Docker를 자동 시작하도록 systemd 설정
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
이제 컨테이너로 만들 이미지를 찾아야 합니다.
이미지를 찾는 방법은 공식 사이트에서도 찾을 수 있고, CLI에서는 docker search
명령어로 찾을 수 있습니다.
명령어: docker search 키워드
Docker Hub: https://hub.docker.com/
갑자기 궁금해져서 도커 데스크탑도 설치해봤습니다.
그런데 뭔가 잘못 됐는지 데스크탑은 실행되지만, 다음 단계인 도커 엔진이 실행되지 않고 있습니다.
윈도우에서는 wsl을 활용하는 방식으로 보이고, 실제로 wsl 목록을 확인하면 docker-desktop
이 추가된 걸 확인할 수 있었습니다.
뭔가 제가 놓친 부분이 있나 봅니다.
일단 이 부분이 해결 되면 도커 데스크탑 관련 내용도 이어서 작성해보겠습니다.
1개의 좋아요
여러가지 방면으로 시도해보다가 일단 Docker 데스크탑이 실행되는 것을 확인했습니다.
관련 글을 참고해서 가상화 설정, Hyper-V 활성화, WSL 2 설치 등을 전부 살펴봤지만, 전부 아니었습니다.
애초에 WSL을 잘 사용하고 있었던 시점에서 해당 문제는 관련이 없었습니다.
공식 자료에서도 관련해서 가이드 되어 있었는데, 이것도 제 문제를 해결해주진 않았었습니다.
그럼, 어떻게 해결했는가?
단순하게 설치 과정에서 어떤 옵션을 끄는 것으로 해결했습니다.
Hyper-V 대신 WSL 2를 사용하겠다는 옵션인데, 뭔가 지금 구성되어 있는 WSL 2 환경에서는 Docker가 어떤 충돌을 일으키고 있나 봅니다.
어쨌든 문제는 해결되었고, Docker 데스크탑도 정상적으로 실행되니 다음 단계로 넘어가 보겠습니다.
이제 Docker Hub에서 이미지를 찾고, 해당 이미지를 설치해 Docker 컨테이너를 구성하는 부분까지 진행해볼 예정입니다.
1개의 좋아요