시스템에 Docker 설치 방법

DockerBeginner
지금 연습하기

소개

Docker 는 개발자가 애플리케이션을 구축, 배포 및 관리하는 방식을 혁신한 강력한 컨테이너화 플랫폼입니다. 이 튜토리얼에서는 시스템에 Docker 를 설치하고 첫 번째 Docker 컨테이너를 실행하는 방법을 배웁니다.

Docker 이해

Docker 는 개발자가 컨테이너 환경에서 애플리케이션을 구축, 배포 및 실행할 수 있도록 지원하는 인기 있는 오픈소스 플랫폼입니다. 컨테이너는 애플리케이션 실행에 필요한 모든 것을 포함하는 (코드, 런타임, 시스템 도구 및 라이브러리) 가벼운 독립 실행형 실행 가능 소프트웨어 패키지입니다.

Docker 란 무엇인가요?

Docker 는 컨테이너를 사용하여 애플리케이션을 생성, 배포 및 실행하는 작업을 더욱 쉽게 만드는 도구입니다. 컨테이너를 통해 개발자는 라이브러리와 기타 종속성과 같은 애플리케이션에 필요한 모든 부분을 패키징하여 하나의 패키지로 배포할 수 있습니다.

Docker 사용의 장점

  1. 일관성: Docker 컨테이너는 기본 인프라에 관계없이 애플리케이션이 동일한 방식으로 실행되도록 보장합니다.
  2. 확장성: Docker 는 필요에 따라 애플리케이션을 확장하거나 축소하기 쉽게 하여 리소스 활용을 개선하고 비용을 절감합니다.
  3. 이식성: Docker 컨테이너는 Docker 가 설치된 모든 시스템에서 실행될 수 있으므로 애플리케이션을 다른 환경으로 쉽게 이동할 수 있습니다.
  4. 효율성: Docker 컨테이너는 가볍고 가상 머신보다 적은 리소스를 사용하여 전체 시스템 성능을 향상시킵니다.

Docker 아키텍처

Docker 는 Docker 클라이언트가 Docker 데몬과 통신하는 클라이언트 - 서버 아키텍처를 사용합니다. Docker 데몬은 Docker 컨테이너를 구축, 실행 및 배포하는 역할을 합니다.

graph LD
    client[Docker Client]
    daemon[Docker Daemon]
    registry[Docker Registry]
    client -- API --> daemon
    daemon -- Pull/Push --> registry

Docker 구성 요소

  1. Docker 이미지: Docker 이미지는 Docker 컨테이너를 생성하기 위한 청사진입니다. 애플리케이션 코드, 종속성 및 기타 필요한 파일을 포함합니다.
  2. Docker 컨테이너: Docker 컨테이너는 Docker 이미지의 실행 인스턴스입니다. 가볍고, 이식 가능하며, 자체적으로 완성된 형태입니다.
  3. Docker 레지스트리: Docker 레지스트리는 Docker 이미지를 저장하고 배포하는 시스템입니다. 가장 인기 있는 레지스트리는 수많은 공개 이미지를 호스팅하는 Docker Hub 입니다.

Docker 시작하기

Docker 를 시작하려면 시스템에 Docker 엔진을 설치해야 합니다. 설치 과정은 운영 체제에 따라 다릅니다. 다음 섹션에서는 Linux 시스템에 Docker 를 설치하는 방법을 다룰 것입니다.

시스템에 Docker 설치하기

이 섹션에서는 Ubuntu 22.04 시스템에 Docker 를 설치하는 방법을 안내합니다.

필수 사항

시작하기 전에 다음 요구 사항을 충족하는지 확인하세요.

  • Ubuntu 22.04 운영 체제
  • Docker 설치 및 관리를 위한 루트 또는 sudo 권한

1 단계: 패키지 인덱스 업데이트

시스템의 패키지 인덱스를 업데이트하여 시작합니다.

sudo apt-get update

2 단계: Docker 설치

apt 가 HTTPS 를 통해 리포지토리를 사용할 수 있도록 필요한 패키지를 설치합니다.

sudo apt update
sudo apt-get install \
  ca-certificates \
  curl \
  gnupg \
  lsb-release

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

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

Docker Engine, containerd 및 Docker Compose 패키지를 설치합니다.

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

3 단계: 설치 확인

다음 명령어를 실행하여 Docker 가 올바르게 설치되었는지 확인합니다.

sudo docker run hello-world

이 명령어는 테스트 이미지를 다운로드하고 컨테이너에서 실행하여 Docker 설치가 예상대로 작동하는지 확인합니다.

축하합니다! Ubuntu 22.04 시스템에 Docker 를 성공적으로 설치했습니다. 다음 섹션에서는 첫 번째 Docker 컨테이너를 실행하는 방법을 살펴보겠습니다.

첫 번째 Docker 컨테이너 실행하기

이제 시스템에 Docker 가 설치되었으므로 첫 번째 Docker 컨테이너를 실행하는 방법을 살펴보겠습니다.

컨테이너 실행하기

Docker 컨테이너를 실행하려면 docker run 명령어를 사용해야 합니다. 이 명령어는 지정된 이미지를 Docker 레지스트리에서 (시스템에 이미 존재하지 않는 경우) 가져와 해당 이미지를 기반으로 새 컨테이너를 시작합니다.

먼저 간단한 "hello world" 컨테이너를 실행해 보겠습니다.

docker run hello-world

이 명령어는 Docker Hub 레지스트리에서 hello-world 이미지를 다운로드하고 해당 이미지를 기반으로 컨테이너를 실행합니다. 컨테이너는 "Hello from Docker!" 메시지를 표시한 후 종료됩니다.

컨테이너와 상호 작용하기

다양한 Docker 명령어를 사용하여 실행 중인 컨테이너와 상호 작용할 수 있습니다.

  • docker ps: 모든 실행 중인 컨테이너 목록
  • docker stop <container_id>: 실행 중인 컨테이너 중지
  • docker start <container_id>: 중지된 컨테이너 시작
  • docker exec -it <container_id> /bin/bash: 실행 중인 컨테이너 내부의 쉘 열기

예를 들어, 실행 중인 컨테이너 내부의 쉘을 열려면 다음 명령어를 사용할 수 있습니다.

docker exec -it < container_id > /bin/bash

이렇게 하면 컨테이너 내부에서 쉘 프롬프트가 표시되어 컨테이너의 파일 시스템과 실행 중인 프로세스를 탐색하고 상호 작용할 수 있습니다.

사용자 정의 이미지 생성 및 실행

사전 제작된 이미지를 실행하는 것 외에도 사용자 고유의 Docker 이미지를 만들 수도 있습니다. 이렇게 하려면 이미지 생성 지침이 포함된 텍스트 파일인 Dockerfile을 만들어야 합니다.

여기 Dockerfile의 간단한 예제가 있습니다.

FROM ubuntu:22.04
RUN apt-get update && apt-get install -y nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Dockerfile은 Ubuntu 22.04 기본 이미지를 기반으로 새 이미지를 생성하고, Nginx 웹 서버를 설치하며, 포트 80 을 노출하고 컨테이너가 실행될 때 Nginx 서비스를 시작합니다.

이미지를 생성하려면 docker build 명령어를 사용할 수 있습니다.

docker build -t my-nginx-app .

이렇게 하면 태그가 my-nginx-app인 새 이미지가 생성됩니다.

이 이미지를 기반으로 컨테이너를 실행하려면 docker run 명령어를 사용할 수 있습니다.

docker run -d -p 80:80 my-nginx-app

이렇게 하면 새 컨테이너가 시작되고 호스트의 포트 80 이 컨테이너의 포트 80 으로 매핑되며 Nginx 웹 서버가 실행됩니다.

축하합니다! 이제 첫 번째 Docker 컨테이너를 실행하고 상호 작용하는 방법을 배웠습니다. 다음 단계에서는 사용자 정의 이미지 생성, 컨테이너 네트워크 관리 및 다중 컨테이너 애플리케이션 배포와 같은 더 고급 Docker 개념을 탐색할 수 있습니다.

요약

이 단계별 가이드를 따르면 Docker 와 설치 과정에 대한 확실한 이해를 얻을 수 있습니다. 시스템에 Docker 를 설정하고 첫 번째 컨테이너를 실행하며 컨테이너화의 이점을 탐색할 수 있습니다. 이 자습서 (튜토리얼) 는 개발자, 시스템 관리자 및 Docker 의 기능을 활용하는 데 관심 있는 모든 사람에게 귀중한 자료입니다.