Ubuntu 에서 Docker 컨테이너 설치 및 실행 방법

DockerBeginner
지금 연습하기

소개

이 포괄적인 Docker 튜토리얼은 개발자 및 시스템 관리자에게 컨테이너 기술을 구현하기 위한 필수 지식을 제공합니다. 기본적인 Docker 개념, 설치 절차 및 실제 예제를 다루면서 학습자는 현대 소프트웨어 배포 및 가상화 기술에 대한 실질적인 기술을 습득하게 됩니다.

Docker 기본

Docker 기본 개념 소개

Docker 는 소프트웨어 배포 및 애플리케이션 가상화를 혁신하는 강력한 컨테이너 기술입니다. 개발자는 애플리케이션과 모든 종속성을 표준화된 단위인 컨테이너에 패키징할 수 있습니다.

컨테이너 기술의 핵심 개념

graph LR A[Docker 이미지] --> B[컨테이너] B --> C[애플리케이션 배포] B --> D[격리]
개념 설명
Docker 이미지 경량의 독립 실행형 실행 패키지
컨테이너 이미지의 실행 가능한 인스턴스
Dockerfile 이미지 구성을 정의하는 스크립트

기본 Docker 아키텍처

컨테이너는 호스트 시스템의 커널을 공유하면서 애플리케이션 격리를 유지하여 경량의 가상화를 제공합니다. 이 접근 방식은 기존 가상 머신과 다릅니다.

Ubuntu 22.04 설치

## 패키지 인덱스 업데이트
sudo apt update

## 종속성 설치
sudo apt install apt-transport-https ca-certificates curl software-properties-common

## Docker GPG 키 추가
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

## 리포지토리 설정
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

## Docker 엔진 설치
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

첫 번째 Docker 컨테이너 예제

## Ubuntu 이미지 가져오기
docker pull ubuntu:latest

## 대화형 컨테이너 실행
docker run -it ubuntu:latest /bin/bash

## 컨테이너 내부
apt update
apt install nginx -y
exit

Docker 환경 설정

Docker 설치를 위한 Ubuntu 22.04 준비

graph LR A[시스템 업데이트] --> B[종속성 설치] B --> C[Docker 리포지토리 설정] C --> D[Docker 엔진 설치] D --> E[Docker 구성]

시스템 요구 사항

요구 사항 사양
OS Ubuntu 22.04 LTS
아키텍처 64 비트
커널 5.10+
RAM 최소 2GB

포괄적인 Docker 설치 스크립트

## 시스템 패키지 업데이트
sudo apt update && sudo apt upgrade -y

## 충돌 패키지 제거
sudo apt remove docker docker-engine docker.io containerd runc

## 필요한 종속성 설치
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release

## Docker 공식 GPG 키 추가
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

## 안정적인 리포지토리 설정
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

## Docker 엔진 설치
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

## 설치 확인
sudo docker --version

설치 후 구성

## docker 사용자 그룹 생성
sudo groupadd docker

## 현재 사용자를 docker 그룹에 추가
sudo usermod -aG docker $USER

## Docker 서비스 활성화
sudo systemctl enable docker.service
sudo systemctl start docker.service

## Docker 기능 확인
docker run hello-world

Docker Compose 설치

## Docker Compose 다운로드
sudo curl -L " -s)-$(uname -m)" -o /usr/local/bin/docker-compose

## 실행 권한 부여
sudo chmod +x /usr/local/bin/docker-compose

## 설치 확인
docker-compose --version

컨테이너 관리

컨테이너 수명주기 개요

graph LR A[이미지 가져오기] --> B[컨테이너 생성] B --> C[컨테이너 시작] C --> D[컨테이너 실행 중] D --> E[컨테이너 중지] E --> F[컨테이너 제거]

기본 Docker 컨테이너 명령어

명령어 기능
docker run 컨테이너 생성 및 시작
docker ps 실행 중인 컨테이너 목록
docker stop 실행 중인 컨테이너 중지
docker rm 컨테이너 제거
docker exec 컨테이너 내 명령어 실행

컨테이너 생성 및 관리

## Ubuntu 이미지 가져오기
docker pull ubuntu:latest

## 대화형 컨테이너 실행
docker run -it --name my-ubuntu ubuntu:latest /bin/bash

## 모든 컨테이너 목록
docker ps -a

## 중지된 컨테이너 시작
docker start my-ubuntu

## 실행 중인 컨테이너 중지
docker stop my-ubuntu

## 컨테이너 제거
docker rm my-ubuntu

고급 컨테이너 작업

## 백그라운드에서 컨테이너 실행
docker run -d --name nginx-server nginx:latest

## 컨테이너 포트를 호스트에 매핑
docker run -p 8080:80 -d nginx:latest

## 컨테이너 세부 정보 확인
docker inspect nginx-server

## 컨테이너 로그 보기
docker logs nginx-server

## 실행 중인 컨테이너에서 명령어 실행
docker exec -it nginx-server bash

컨테이너 리소스 관리

## 컨테이너 리소스 제한
docker run -d \
  --name limited-container \
  --cpus="1" \
  --memory="512m" \
  nginx:latest

## 컨테이너 리소스 사용량 모니터링
docker stats

컨테이너 네트워크 구성

## 사용자 정의 네트워크 생성
docker network create my-network

## 특정 네트워크에서 컨테이너 실행
docker run --network=my-network -d nginx:latest

요약

Docker 는 소프트웨어 배포에 혁명적인 접근 방식을 제시합니다. 가볍고 휴대 가능한 컨테이너를 통해 애플리케이션 개발 및 인프라 관리를 간소화합니다. Docker 의 핵심 원리, 설치 프로세스, 컨테이너 관리 기술을 숙달함으로써 전문가들은 다양한 컴퓨팅 환경에서 소프트웨어 개발 및 배포 역량을 크게 향상시킬 수 있습니다.