Docker 기본 명령어 사용 방법

DockerBeginner
지금 연습하기

소개

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 의 장점

  1. 환경 간 일관성
  2. 빠른 배포
  3. 향상된 확장성
  4. 개선된 리소스 활용
  5. 간소화된 종속성 관리

사용 사례

  • 마이크로서비스 아키텍처
  • 지속적 통합/지속적 배포 (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 기술에 능숙해지고 개발 워크플로우를 간소화하십시오.