Backend/Docker

[Docker] 2. Docker 설치 및 환경 설정

팬돌프 2025. 9. 24. 00:05
반응형

안녕하세요! 여러분의 IT 길잡이, 팬돌프입니다. 🤓

지난 1편에서는 도커의 핵심 개념과 아키텍처에 대해 알아보았는데요, 많은 도움이 되셨나요? 이론으로 튼튼하게 기초를 다졌으니, 이제는 직접 도커를 우리 손으로 다뤄볼 시간입니다!

이번 2편에서는 여러분의 컴퓨터에 도커를 설치하고, 컨테이너를 실행하기 위한 모든 준비를 마치는 과정을 저 팬돌프가 하나하나 친절하게 안내해 드릴게요. 자, 그럼 함께 실습 환경을 구축하러 가볼까요?


🐳  Docker 설치 및 환경 설정

1. 어떤 것을 설치해야 할까요? Docker Desktop vs Docker Engine

도커를 설치하려고 보면 'Docker Desktop'과 'Docker Engine'이라는 두 가지 용어를 만나게 됩니다. 어떤 것을 선택해야 할지 헷갈릴 수 있는데요, 제가 명확하게 정리해 드릴게요.

  • Docker Engine: 도커의 핵심 그 자체입니다. 지난 시간에 배운 도커 데몬, API, CLI로 구성된 커맨드 라인 기반의 도구입니다. 주로 실제 서비스가 운영되는 리눅스 서버 환경에 직접 설치해서 사용합니다.
  • Docker Desktop: 개발자들을 위한 통합 애플리케이션입니다. Docker Engine을 포함하고 있을 뿐만 아니라, 컨테이너와 이미지를 시각적으로 관리할 수 있는 GUI(그래픽 사용자 인터페이스), 쿠버네티스(Kubernetes) 클러스터 기능 등 개발에 유용한 여러 도구를 함께 제공합니다. Windows와 macOS 사용자를 위해 만들어졌습니다.
Windows나 macOS에서 개발용으로 사용하신다면? 고민 없이 Docker Desktop을 설치하세요!
Linux 서버(예: AWS EC2, GCP Compute Engine 등)에 배포용으로 설치하신다면? Docker Engine을 설치하시면 됩니다.

 


2. 운영체제별 Docker 설치 가이드

이제 여러분의 운영체제에 맞는 설치를 진행해 보겠습니다.

A. Windows에 Docker Desktop 설치하기

Windows 10/11에서는 WSL2 (Windows Subsystem for Linux 2)라는 기술을 사용하여 도커를 실행합니다. 설치 과정에서 Docker Desktop이 WSL 2 설치를 도와주니 걱정 마세요!

  1. 공식 홈페이지에서 'Docker Desktop for Windows'를 다운로드합니다.
  2. 다운로드한 설치 파일을 실행하고, "Use WSL 2 instead of Hyper-V" 옵션이 체크되어 있는지 확인한 후 'Ok' 버튼을 누릅니다.
  3. 설치가 완료되면 컴퓨터를 재시작합니다.
  4. 재시작 후 Docker Desktop이 자동으로 실행되며, 서비스 약관에 동의하면 설치가 최종적으로 완료됩니다.

https://www.docker.com/products/docker-desktop/

 

Docker Desktop: The #1 Containerization Tool for Developers | Docker

Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux.

www.docker.com

B. macOS에 Docker Desktop 설치하기

macOS 설치는 더욱 간단합니다.

  1. 공식 홈페이지에서 본인의 Mac 칩에 맞는 버전('Mac with Intel chip' 또는 'Mac with Apple silicon')을 다운로드합니다.
  2. 다운로드한 Docker.dmg 파일을 실행합니다.
  3. 나타나는 창에서 Docker 아이콘을 Applications 폴더로 드래그 앤 드롭하면 설치가 끝납니다. 참 쉽죠?

C. Linux (Ubuntu)에 Docker Engine 설치하기

Linux 서버 환경에서는 보통 다음의 명령어들을 순서대로 터미널에 입력하여 설치합니다. 우선 Ubuntu OS 기준으로 설명하고 다른 OS 같은 경우 아래 URL을 참고해 주시기 바랍니다.

# 1. 패키지 목록 업데이트
sudo apt-get update

# 2. 필수 패키지 설치
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

# 3. Docker 공식 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

# 4. Docker 저장소 설정
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

# 5. 다시 패키지 목록 업데이트
sudo apt-get update

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

3. 설치 확인 및 초기 설정

도커가 성공적으로 설치되었는지 확인하는 것은 매우 중요합니다. 터미널(Windows에서는 PowerShell 또는 CMD)을 열고 아래 명령어를 입력해보세요.

docker --version

docker 버전 확인

 

도커 버전 정보가 잘 나타난다면, 이제 전 세계 개발자들이 첫 단계에서 실행하는 마법의 주문을 외워볼 차례입니다.

docker run hello-world

 

이 명령어를 실행하면 다음과 같은 일이 순식간에 일어납니다.

docker run hello-world 실행 화면

  1. 로컬에 hello-world 이미지가 있는지 확인합니다.
  2. 없으면, Docker Hub라는 기본 이미지 저장소에서 이미지를 다운로드합니다.
  3. 다운로드한 이미지로 새로운 컨테이너를 생성하고 실행합니다.
  4. 컨테이너는 환영 메시지를 출력하고 종료됩니다.

"Hello from Docker!" 메시지가 보이시나요? 축하합니다! 여러분은 방금 첫 번째 도커 컨테이너를 성공적으로 실행하셨습니다!

Linux 사용자를 위한 Tip! sudo 없이 docker 명령어 사용하기

Linux에 Docker Engine을 설치하면 기본적으로 docker 명령어를 사용할 때마다 sudo를 붙여야 해서 번거롭습니다. 현재 사용자를 docker 그룹에 추가하면 sudo 없이 명령어를 사용할 수 있습니다.

sudo usermod -aG docker $USER

 

위 명령어를 실행한 후, 터미널을 완전히 닫았다가 다시 열거나 시스템을 재로그인하면 적용됩니다.


4. Docker Desktop 둘러보기

Windows와 macOS에 설치된 Docker Desktop을 실행하면 컨테이너의 상태를 한눈에 볼 수 있는 편리한 대시보드가 나타납니다.

Docker Desktop 대시보드

  • Ask Gorden : 'Ask Gordon'은 Docker Desktop에 내장된 인공지능(AI) 비서입니다. 사용자가 Docker를 사용하면서 겪는 다양한 문제 상황에 대해 실시간으로 도움을 줍니다. 
    • 컨텍스트 기반 문제 해결: 컨테이너 실행 실패 시 에러 로그를 분석하여 해결책을 제안합니다.
    • Dockerfile 최적화: 작성한 Dockerfile을 분석하여 더 효율적이고 안전한 코드로 개선할 점을 알려줍니다. (예: 멀티-스테이지 빌드 적용 제안)
    • 명령어 추천: "MongoDB를 어떻게 실행하나요?" 와 같이 자연어로 질문하면, 필요한 Docker 명령어와 설정을 알려줍니다.
    • 보안 취약점 개선: Docker Scout와 연동하여 발견된 취약점에 대한 수정 방법을 안내합니다.
  • Containers(컨테이너) : 현재 실행 중이거나 중지된 모든 컨테이너 목록을 보여주는 가장 기본적인 메뉴입니다. 각 컨테이너에 대해 다음과 같은 작업을 수행할 수 있습니다.
    • 시작/중지/재시작: 컨테이너의 생명주기를 관리합니다.
    • 로그 확인: 컨테이너에서 발생하는 실시간 로그를 확인하여 디버깅에 활용할 수 있습니다.
    • 터미널 접속 (CLI): 실행 중인 컨테이너 내부에 직접 명령어를 입력할 수 있는 터미널 환경에 접근합니다.
    • 상세 정보 확인: 컨테이너의 ID, 사용 중인 이미지, 포트 설정, 네트워크 정보 등 상세한 내용을 확인할 수 있습니다.
    • 삭제: 불필요한 컨테이너를 영구적으로 삭제합니다.
  • Images(이미지) : 로컬 시스템에 다운로드되었거나 직접 빌드한 도커 이미지들의 목록을 관리하는 공간입니다. 이미지는 컨테이너를 생성하기 위한 템플릿 역할을 합니다.
    • 이미지 실행 (Run): 선택한 이미지를 기반으로 새로운 컨테이너를 생성하고 실행할 수 있습니다.
    • 이미지 가져오기 (Pull): Docker Hub와 같은 원격 레지스트리에서 새로운 이미지를 다운로드합니다.
    • 이미지 빌드 (Build): Dockerfile을 사용하여 자신만의 커스텀 이미지를 생성합니다.
    • 이미지 내보내기/가져오기 (Export/Import): 이미지를 .tar 파일 형태로 저장하거나 불러올 수 있습니다.
    • 이미지 삭제: 더 이상 사용하지 않는 이미지를 삭제하여 디스크 공간을 확보합니다.
  • Volumes(볼륨) : 컨테이너의 데이터를 영구적으로 저장하기 위해 사용되는 볼륨을 관리하는 메뉴입니다. 컨테이너가 삭제되더라도 볼륨에 저장된 데이터는 유지됩니다.
    • 볼륨 생성/삭제: 새로운 볼륨을 만들거나 기존 볼륨을 삭제할 수 있습니다.
    • 상세 정보: 각 볼륨의 이름, 드라이버, 마운트 위치 등의 정보를 확인할 수 있습니다.
    • 데이터 탐색: 볼륨에 저장된 파일과 폴더를 직접 탐색하고 관리할 수 있는 기능을 제공하기도 합니다.
  • Kubernetes(쿠버네티스) : 이 메뉴는 컨테이너 오케스트레이션 도구의 표준인 쿠버네티스(Kubernetes) 클러스터를 클릭 한 번으로 PC에 설치하고 실행해주는 기능입니다. 여러 개의 컨테이너를 유기적으로 관리해야 하는 복잡한 애플리케이션을 개발하고 테스트하는 데 필수적입니다.
    • 원클릭 설치: Settings > Kubernetes 메뉴에서 Enable Kubernetes 체크박스를 켜기만 하면, 필요한 모든 구성 요소를 자동으로 다운로드하고 단일 노드(Single-node) 쿠버네티스 클러스터를 로컬에 구축합니다.
    • kubectl 자동 연동: 활성화 시, 쿠버네티스 커맨드라인 도구인 kubectl이 이 로컬 클러스터(docker-desktop 컨텍스트)를 사용하도록 자동으로 설정됩니다. 개발자는 별도 설정 없이 터미널에서 바로 kubectl 명령어를 사용할 수 있습니다.
    • 간편한 초기화: Reset Kubernetes Cluster 버튼으로 언제든지 클러스터를 깨끗한 초기 상태로 되돌릴 수 있어 테스트 환경을 손쉽게 관리할 수 있습니다.
    • 사용 목적: 운영 환경과 거의 동일한 쿠버네티스 환경을 개발자 PC에 구축하여, 애플리케이션을 실제 서버에 배포하기 전에 충분히 테스트하고 디버깅하기 위해 사용합니다.
  • Builds(빌드) : Docker 이미지를 빌드하는 과정을 더 효율적으로 관리하고 시각화해주는 기능입니다. 특히 BuildKit의 고급 기능을 활용할 수 있습니다.
    • 빌드 기록: 이전에 수행했던 이미지 빌드 내역과 성공 여부를 확인할 수 있습니다.
    • 빌드 캐시 관리: 빌드 속도를 높이기 위해 사용된 캐시를 관리하고 필요시 삭제할 수 있습니다.
    • 빌드 과정 분석: 이미지 빌드의 각 단계별 소요 시간과 로그를 분석하여 빌드 과정을 최적화하는 데 도움을 줍니다.
  • Models(모델) : 이 메뉴는 개발자가 인공지능(AI) 모델, 특히 대규모 언어 모델(LLM)을 자신의 PC에서 간편하게 다운로드하고 실행할 수 있게 해주는 'Docker Model Runner' 기능입니다. 복잡한 Python 환경 설정이나 라이브러리 설치 없이, Docker 컨테이너를 다루듯 AI 모델을 사용할 수 있습니다.
    • 간편한 모델 실행: Docker Hub나 HuggingFace 같은 저장소에 있는 AI 모델을 간단한 명령어로 다운로드하고 바로 실행할 수 있습니다.
    • 통합된 개발 환경: 기존 Docker 워크플로우에 자연스럽게 AI 모델을 통합하여 AI 기반 애플리케이션을 개발하고 테스트하기 용이합니다.
    • OpenAI 호환 API: 모델을 실행하면 로컬에 OpenAI와 호환되는 API 엔드포인트가 생성됩니다. 이를 통해 기존에 OpenAI API를 사용하던 코드의 주소만 변경하여 로컬 모델을 테스트해볼 수 있습니다.
    • 하드웨어 가속: Apple Silicon의 GPU나 NVIDIA GPU를 활용하여 모델의 추론 속도를 높일 수 있습니다.
    • 사용 목적: AI 모델을 활용한 애플리케이션을 개발할 때, 실제 배포 전 자신의 컴퓨터에서 빠르고 안정적으로 모델을 테스트하고 검증하기 위해 사용합니다.
  • MCP Toolkit(MCP 툴킷) : MCP(Model Context Protocol) Toolkit은 AI 에이전트(LLM 등)가 외부 도구나 데이터를 안전하게 사용하도록 연결해주는 게이트웨이입니다. 복잡한 설정 없이 클릭 몇 번으로 AI가 내 컴퓨터의 파일 시스템에 접근하거나, GitHub API를 사용하는 등의 작업을 수행할 수 있게 해줍니다.
    • AI 에이전트와 도구 연결: Claude, VS Code 등 다양한 AI 클라이언트를 GitHub, Playwright 같은 도구(MCP 서버)와 쉽게 연결합니다.
    • 보안 강화: AI 에이전트가 시스템에 직접 접근하는 대신, MCP라는 표준화되고 통제된 프로토콜을 통해 작동하므로 보안성이 향상됩니다.
    • 간편한 설정: OAuth 인증과 같은 복잡한 과정을 툴킷이 대신 처리해주어 개발자가 AI 연동 기능 개발에만 집중할 수 있도록 돕습니다.
  •  
  • Docker Hub(도커 허브) : Docker Hub는 원래 Docker의 공식 이미지 저장소(레지스트리) 서비스이지만, 이제 Docker Desktop 내에 독립적인 메뉴로 통합되어 접근성과 편의성이 크게 향상되었습니다.
    • 통합된 이미지 검색: Docker Desktop을 벗어나지 않고 Docker Hub의 수많은 공개 이미지를 바로 검색하고, 상세 정보를 확인할 수 있습니다.
    • 간편한 이미지 관리 (Pull & Push): 원하는 이미지를 클릭 한 번으로 로컬 시스템으로 가져오거나(Pull), 내가 만든 이미지를 Docker Hub 저장소로 올릴(Push) 수 있습니다.
    • 조직 및 팀 관리: 소속된 조직(Organization)의 private 저장소에 접근하고 팀원들과 이미지를 공유하는 협업 기능이 강화되었습니다.
  • Docker Scout(도커 스카우트) : Docker Scout는 컨테이너 이미지의 보안 취약점과 공급망(Supply Chain)을 분석하고 관리해주는 강력한 보안 도구입니다. 개발 초기 단계부터 이미지의 안전성을 확보할 수 있도록 돕습니다.
    • 취약점 분석: 이미지의 각 레이어와 포함된 소프트웨어 패키지를 분석하여 알려진 보안 취약점(CVE)을 찾아 목록으로 보여줍니다.
    • 개선 방안 제시: 발견된 취약점을 해결할 수 있는 구체적인 방법을 제안합니다. (예: 더 안전한 상위 버전의 베이스 이미지 사용 추천)
    • SBOM (Software Bill of Materials) 생성: 이미지에 포함된 모든 구성 요소의 목록을 생성하여 소프트웨어 공급망의 투명성을 높입니다.
    • 정책 기반 관리: "심각도 'High' 이상의 취약점이 있으면 빌드 실패"와 같은 보안 정책을 설정하고 자동으로 검사할 수 있습니다.
  • Extensions(확장 기능) : Docker Desktop의 기능을 더욱 확장시켜주는 서드파티 플러그인들을 설치하고 관리할 수 있는 메뉴입니다.
    • 마켓플레이스: 다양한 확장 기능을 검색하고 설치할 수 있는 공간입니다.
    • 설치된 확장 기능 관리: 현재 설치된 확장 기능들을 활성화/비활성화하거나 업데이트, 삭제할 수 있습니다.
    • 주요 확장 기능: 디스크 사용량 분석, 보안 취약점 스캔, 로그 관리 등 개발 워크플로우를 개선하는 데 유용한 도구들이 많습니다.

지금은 비어있겠지만, 앞으로 이곳을 채워나갈 생각을 하니 벌써부터 두근거리지 않으신가요?

마치며

자, 이렇게 해서 Docker를 실행하기 위한 모든 준비가 끝났습니다. 이제 여러분의 컴퓨터는 강력한 컨테이너 엔진을 장착한 셈입니다.

다음 3편에서는 오늘 설치한 도커를 이용해 컨테이너를 실제로 생성하고, 실행하고, 관리하는 기초적인 방법들에 대해 본격적으로 알아볼 예정입니다. 기대하셔도 좋습니다!

설치 과정에서 어려움이 있으셨다면 언제든 댓글로 남겨주세요. 여러분의 IT 탐험가, 팬돌프였습니다! 😊

 

반응형