소개
Docker 는 컨테이너화를 위한 강력한 플랫폼을 제공하여 소프트웨어 개발을 혁신했습니다. 이 포괄적인 튜토리얼은 기본적인 Docker 명령어를 안내하여 개발자와 시스템 관리자가 Docker 컨테이너, 이미지 및 네트워크를 효율적으로 관리하는 방법을 이해하는 데 도움을 줄 것입니다. 초보자이든 Docker 기술을 되살리고자 하는 분이든, 이 가이드는 Docker 명령줄 인터페이스를 사용하는 실질적인 통찰력을 제공할 것입니다.
Docker 핵심 개념
Docker 란 무엇인가?
Docker 는 컨테이너화를 통해 애플리케이션 배포, 확장 및 관리를 자동화하는 오픈소스 플랫폼입니다. 개발자는 애플리케이션과 모든 종속성을 컨테이너라는 표준화된 단위에 패키징하여 다양한 컴퓨팅 환경에서 일관되게 실행할 수 있도록 합니다.
주요 Docker 개념
1. 컨테이너
컨테이너는 애플리케이션 실행에 필요한 모든 것을 포함하는 경량의 독립 실행형 패키지입니다.
- 코드
- 런타임 환경
- 시스템 도구
- 시스템 라이브러리
- 설정
graph LR
A[애플리케이션 코드] --> B[컨테이너]
C[종속성] --> B
D[시스템 라이브러리] --> B
E[설정] --> B
2. 이미지
Docker 이미지는 컨테이너를 생성하는 데 사용되는 읽기 전용 템플릿입니다. 컨테이너 생성의 청사진 역할을 하며 Docker Hub 와 같은 레지스트리에 저장될 수 있습니다.
3. Dockerfile
Dockerfile 은 Docker 이미지를 빌드하는 지침이 포함된 텍스트 문서입니다. 애플리케이션의 환경, 종속성 및 구성을 정의합니다.
예시 Dockerfile:
FROM ubuntu:22.04
RUN apt-get update
RUN apt-get install -y python3
COPY . /app
WORKDIR /app
CMD ["python3", "app.py"]
4. Docker 아키텍처
graph TB
A[Docker 클라이언트] --> B[Docker 데몬]
B --> C[컨테이너 런타임]
B --> D[이미지 레지스트리]
B --> E[이미지 저장소]
5. 컨테이너와 가상 머신 비교
| 특징 | 컨테이너 | 가상 머신 |
|---|---|---|
| 리소스 사용량 | 경량 | 중량 |
| 시작 시간 | 몇 초 | 몇 분 |
| 격리 수준 | 프로세스 수준 | 전체 OS 수준 |
| 성능 | 높음 | 낮음 |
Docker 의 장점
- 환경 간 일관성
- 빠른 배포
- 향상된 확장성
- 개선된 리소스 활용
- 간소화된 종속성 관리
사용 사례
- 마이크로서비스 아키텍처
- 지속적 통합/지속적 배포 (CI/CD)
- 클라우드 네이티브 애플리케이션 개발
- 간소화된 애플리케이션 테스트
LabEx 시작하기
LabEx 는 개발자가 컨테이너화 기술을 빠르게 이해하고 연습할 수 있도록 상호 작용적인 Docker 학습 환경을 제공합니다.
Docker 설치 가이드
사전 준비
Docker 를 설치하기 전에 Ubuntu 22.04 시스템이 다음 요구 사항을 충족하는지 확인하십시오.
- 64 비트 운영 체제
- 커널 버전 3.10 이상
- 충분한 시스템 리소스
설치 방법
1. 리포지토리 사용 설치
단계 1: 패키지 인덱스 업데이트
sudo apt-get update
단계 2: 필요한 패키지 설치
sudo apt update
sudo apt-get install ca-certificates curl gnupg lsb-release
단계 3: Docker 공식 GPG 키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
단계 4: Docker 리포지토리 설정
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
단계 5: Docker 엔진 설치
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
2. 설치 확인
sudo docker --version
sudo docker run hello-world
설치 워크플로우
graph TD
A[시스템 업데이트] --> B[필수 종속성 설치]
B --> C[GPG 키 추가]
C --> D[리포지토리 설정]
D --> E[Docker 설치]
E --> F[설치 확인]
설치 후 단계
1. 일반 사용자로 Docker 관리
sudo usermod -aG docker $USER
newgrp docker
2. 부팅 시 Docker 자동 시작 설정
sudo systemctl enable docker
sudo systemctl start docker
Docker 설치 옵션
| 방법 | 장점 | 단점 |
|---|---|---|
| 리포지토리 | 업데이트 용이 | 인터넷 연결 필요 |
| 공식 패키지 | 직접 제어 | 수동 업데이트 필요 |
| 스크립트 설치 | 빠른 설정 | 보안성 낮음 |
일반적인 문제 해결
- 시스템 호환성 확인
- 네트워크 연결 확인
- 충분한 디스크 공간 확보
- 시스템 패키지 정기적으로 업데이트
LabEx Docker 학습 환경
LabEx 는 개발자가 컨테이너화 기술을 신속하고 효과적으로 숙달할 수 있도록 상호 작용적인 Docker 설치 튜토리얼 및 실습 환경을 제공합니다.
권장 시스템 요구 사항
| 구성 요소 | 최소 사양 |
|---|---|
| CPU | 2 코어 |
| RAM | 4GB |
| 디스크 공간 | 20GB |
| OS | Ubuntu 22.04 LTS |
기본 Docker 명령어
Docker 명령어 구조
Docker 명령어는 표준 구문을 따릅니다.
docker [명령어] [옵션] [인수]
이미지 관리 명령어
1. 이미지 가져오기
docker pull ubuntu:latest
docker pull nginx:alpine
2. 이미지 목록 보기
docker images
docker image ls
3. 이미지 삭제
docker rmi ubuntu:latest
docker image rm nginx:alpine
컨테이너 관리 명령어
1. 컨테이너 생성 및 실행
docker run -d --name web-server nginx
docker run -it ubuntu:latest /bin/bash
2. 컨테이너 목록 보기
docker ps ## 실행 중인 컨테이너
docker ps -a ## 모든 컨테이너
3. 컨테이너 시작, 중지, 재시작
docker start web-server
docker stop web-server
docker restart web-server
4. 컨테이너 삭제
docker rm web-server
docker container prune ## 중지된 모든 컨테이너 삭제
컨테이너 상호 작용 명령어
1. 컨테이너 내 명령어 실행
docker exec -it web-server bash
docker exec web-server ls /var/www/html
2. 컨테이너 로그 보기
docker logs web-server
docker logs -f web-server ## 로그 출력 추적
Docker 워크플로우
graph TD
A[이미지 가져오기] --> B[컨테이너 생성]
B --> C[컨테이너 시작]
C --> D[상호 작용/실행]
D --> E[컨테이너 중지]
E --> F[컨테이너 삭제]
고급 Docker 명령어
1. 사용자 정의 이미지 빌드
docker build -t myapp:v1 .
2. Docker 볼륨
docker volume create myvolume
docker run -v myvolume:/app nginx
3. 네트워크 관리
docker network create mynetwork
docker run --network mynetwork nginx
일반적인 Docker 명령어 분류
| 분류 | 목적 | 예시 명령어 |
|---|---|---|
| 이미지 관리 | Docker 이미지 관리 | pull, push, build |
| 컨테이너 관리 | 컨테이너 제어 | run, start, stop |
| 시스템 관리 | Docker 시스템 정보 | info, version |
| 네트워크 관리 | 네트워크 관리 | network create |
| 볼륨 관리 | 영구 데이터 관리 | volume create |
권장 사항
- 특정 이미지 태그 사용
- 사용하지 않는 리소스 정리
- 복잡한 설정에는 Docker Compose 사용
- 다단계 빌드 구현
LabEx Docker 학습
LabEx 는 이러한 Docker 명령어를 연습할 수 있는 상호 작용형 환경을 제공하여 개발자가 컨테이너화 기술을 효율적으로 습득할 수 있도록 지원합니다.
유용한 Docker 명령어 옵션
| 옵션 | 설명 | 예시 |
|---|---|---|
-d |
분리 모드 | docker run -d nginx |
-it |
대화형 터미널 | docker run -it ubuntu |
--name |
컨테이너 이름 지정 | docker run --name web nginx |
-p |
포트 매핑 | docker run -p 8080:80 nginx |
요약
이러한 기본 Docker 명령어를 숙달함으로써 컨테이너 관리 및 배포에 필수적인 기술을 습득했습니다. Docker 는 다양한 환경에서 컨테이너를 생성, 실행 및 관리하는 강력한 솔루션을 제공합니다. Docker 의 기능을 계속 탐색하면서, 이러한 기본 명령어가 효율적인 컨테이너화 전략의 기반임을 기억하십시오. 이러한 명령어를 연습하고 실험하여 Docker 기술에 능숙해지고 개발 워크플로우를 간소화하십시오.



