소개
Docker 는 컨테이너화를 위한 강력한 플랫폼을 제공하여 소프트웨어 개발을 혁신했습니다. 이 튜토리얼은 첫 번째 Docker 이미지를 배포하는 필수 단계를 안내하여 개발자 및 IT 전문가가 Docker 컨테이너의 기본 개념과 실제 구현을 이해하는 데 도움을 줄 것입니다.
Docker 는 컨테이너화를 위한 강력한 플랫폼을 제공하여 소프트웨어 개발을 혁신했습니다. 이 튜토리얼은 첫 번째 Docker 이미지를 배포하는 필수 단계를 안내하여 개발자 및 IT 전문가가 Docker 컨테이너의 기본 개념과 실제 구현을 이해하는 데 도움을 줄 것입니다.
Docker 는 컨테이너화 기술을 사용하여 애플리케이션의 배포, 확장 및 관리를 자동화하는 오픈소스 플랫폼입니다. 개발자는 모든 종속성을 포함한 애플리케이션을 표준화된 단위인 컨테이너에 패키징할 수 있습니다.
컨테이너는 애플리케이션 실행에 필요한 모든 것을 포함하는 경량의 독립 실행형 실행 패키지입니다. 코드, 런타임, 시스템 도구, 라이브러리 및 설정이 포함됩니다.
Docker 이미지는 컨테이너를 생성하는 데 사용되는 읽기 전용 템플릿입니다. 컨테이너 생성의 기반이 되며 Docker Hub 와 같은 레지스트리에 저장될 수 있습니다.
| 구성 요소 | 설명 |
|---|---|
| Docker 클라이언트 | Docker 와 상호 작용하기 위한 명령줄 인터페이스 |
| Docker 데몬 | Docker 객체를 관리하는 백그라운드 서비스 |
| Docker 레지스트리 | Docker 이미지를 저장하고 배포하는 시스템 |
Ubuntu 에 Docker 를 설치하려면 다음 명령어를 사용합니다.
## 패키지 인덱스 업데이트
sudo apt update
## 종속성 설치
sudo apt install apt-transport-https ca-certificates curl software-properties-common
## Docker 공식 GPG 키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | 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] https://download.docker.com/linux/ubuntu $(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 가 정상적으로 작동하는지 확인합니다.
## Docker 버전 확인
docker --version
## hello-world 컨테이너 실행
sudo docker run hello-world
LabEx 는 개발자가 컨테이너화 기술을 더 효과적으로 연습하고 이해하는 데 도움이 되는 대화형 Docker 학습 환경을 제공합니다.
Docker 환경을 설정하기 전에 다음 요구 사항을 충족하는지 확인하십시오.
| 요구 사항 | 사양 |
|---|---|
| 운영 체제 | Ubuntu 22.04 LTS |
| CPU | 64 비트 프로세서 |
| RAM | 최소 4GB |
| 저장 공간 | 20GB 이상의 디스크 공간 |
sudo apt update
sudo apt upgrade -y
sudo apt install -y \
ca-certificates \
curl \
gnupg \
lsb-release \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
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
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo usermod -aG docker $USER
sudo systemctl enable docker
sudo systemctl start docker
docker --version
docker compose version
sudo docker run hello-world
sudo apt install docker-compose
| 도구 | 용도 |
|---|---|
| Docker Desktop | Docker 관리 GUI |
| Visual Studio Code | Docker 확장 프로그램이 있는 IDE |
| Docker Hub | 컨테이너 이미지 레포지토리 |
LabEx 는 설정 및 학습을 간소화하는 사전 구성된 Docker 환경을 제공하여 초보자가 컨테이너화 기술을 시작하기 쉽게 합니다.
## Ubuntu 이미지 가져오기
docker pull ubuntu:latest
## Nginx 웹 서버 이미지 가져오기
docker pull nginx:latest
## Python 개발 이미지 가져오기
docker pull python:3.9
## Ubuntu 컨테이너 실행
docker run -it ubuntu:latest /bin/bash
## Nginx 웹 서버 실행
docker run -d -p 8080:80 nginx:latest
## Python 대화형 컨테이너 실행
docker run -it python:3.9 python
| 명령어 | 설명 |
|---|---|
docker ps |
실행 중인 컨테이너 목록 |
docker ps -a |
모든 컨테이너 목록 |
docker start <컨테이너_ID> |
중지된 컨테이너 시작 |
docker stop <컨테이너_ID> |
실행 중인 컨테이너 중지 |
docker rm <컨테이너_ID> |
컨테이너 제거 |
## 공식 Python 기반 이미지 사용
FROM python:3.9
## 작업 디렉토리 설정
WORKDIR /app
## 애플리케이션 파일 복사
COPY . /app
## 종속성 설치
RUN pip install flask
## 포트 노출
EXPOSE 5000
## 시작 명령 정의
CMD ["python", "app.py"]
## Docker 이미지 빌드
docker build -t myapp:v1 .
## 사용자 정의 컨테이너 실행
docker run -p 5000:5000 myapp:v1
## 컨테이너 포트 80을 호스트 포트 8080으로 매핑
docker run -d -p 8080:80 nginx:latest
## 이름이 지정된 볼륨 생성
docker volume create mydata
## 컨테이너에 볼륨 마운트
docker run -v mydata:/data ubuntu:latest
## 컨테이너 로그 보기
## 리소스 사용량 모니터링
## 컨테이너 세부 정보 확인
LabEx 는 개발자가 실습 중심의 안내 환경에서 컨테이너 배포 기술을 연습할 수 있도록 대화형 Docker 실습 환경을 제공합니다.
| 기술 | 설명 |
|---|---|
| Docker Compose | 멀티 컨테이너 오케스트레이션 |
| Kubernetes | 컨테이너 확장 및 관리 |
| Docker Swarm | 네이티브 Docker 클러스터링 |
이 튜토리얼을 완료함으로써 Docker 컨테이너화에 대한 중요한 통찰력을 얻었으며, Docker 환경을 설정하고 첫 번째 컨테이너를 성공적으로 배포하는 방법을 배웠습니다. 이러한 기본적인 기술은 실제 상황에서 더 복잡한 애플리케이션 배포 및 관리에 Docker 의 기능을 활용할 수 있도록 능력을 향상시킬 것입니다.