카테고리 없음

Docker

idea9329 2024. 8. 27. 10:18
반응형

Docker(도커)는 애플리케이션을 컨테이너로 패키징하고, 배포 및 실행하는 데 사용되는 도구입니다. Docker를 사용하면 애플리케이션을 일관된 환경에서 실행할 수 있으며, 개발, 테스트, 배포 과정을 단순화할 수 있습니다. Docker를 처음 사용하는 사람들을 위한 기본적인 사용법을 단계별로 소개하겠습니다.

1. Docker 설치

  • Windows, MacOS: Docker Desktop을 설치하세요.
  • Linux: 각 배포판에 맞는 Docker 설치 가이드를 따르세요. 예를 들어, Ubuntu에서 Docker를 설치하려면 다음 명령어를 사용합니다:Docker가 설치되면, 다음 명령어로 설치를 확인할 수 있습니다:
  • docker --version
  • sudo apt-get update sudo apt-get install docker.io sudo systemctl start docker sudo systemctl enable docker

2. Docker 이미지 다운로드 및 실행

Docker 이미지는 컨테이너의 템플릿입니다. 이미지는 Docker Hub와 같은 저장소에서 다운로드할 수 있습니다.

  • 이미지 다운로드: Docker Hub에서 제공하는 이미지를 다운로드하려면 docker pull 명령어를 사용합니다. 예를 들어, nginx 웹 서버 이미지를 다운로드하려면:
  • docker pull nginx
  • 컨테이너 실행: 이미지를 기반으로 컨테이너를 실행하려면 docker run 명령어를 사용합니다. 예를 들어, nginx 웹 서버를 실행하려면:여기서 -d는 백그라운드에서 실행하라는 의미이고, -p는 호스트의 포트 80을 컨테이너의 포트 80에 매핑하라는 의미입니다.
  • docker run -d -p 80:80 nginx

3. Docker 컨테이너 관리

  • 실행 중인 컨테이너 목록 확인:이 명령어는 현재 실행 중인 컨테이너의 목록을 보여줍니다. 모든 컨테이너(중지된 컨테이너 포함)를 보려면 docker ps -a를 사용합니다.
  • docker ps
  • 컨테이너 중지:
  • docker stop <컨테이너 ID 또는 이름>
  • 컨테이너 시작:
  • docker start <컨테이너 ID 또는 이름>
  • 컨테이너 삭제:
  • docker rm <컨테이너 ID 또는 이름>

4. Docker 이미지 관리

  • 이미지 목록 확인:
  • docker images
  • 이미지 삭제:
  • docker rmi <이미지 ID 또는 이름>
  • Docker 이미지 빌드: Dockerfile을 사용하여 직접 이미지를 빌드할 수 있습니다. 프로젝트 디렉토리에 Dockerfile을 작성한 후, 다음 명령어로 이미지를 빌드합니다.여기서 -t 옵션은 이미지에 태그를 지정하는 옵션이며, .은 현재 디렉토리에서 Dockerfile을 찾겠다는 의미입니다.
  • docker build -t <이미지 이름> .

5. Dockerfile 작성

Dockerfile은 Docker 이미지를 빌드하기 위한 스크립트 파일입니다. 예를 들어, 간단한 Python 애플리케이션을 위한 Dockerfile은 다음과 같습니다:

# 베이스 이미지 선택
FROM python:3.9-slim

# 작업 디렉토리 설정
WORKDIR /app

# 필요한 파일 복사
COPY . /app

# 종속성 설치
RUN pip install -r requirements.txt

# 컨테이너 실행 시 실행할 명령어 설정
CMD ["python", "app.py"]

이 Dockerfile을 사용하여 이미지를 빌드하려면:

docker build -t my-python-app .

6. Docker Compose 사용

Docker Compose는 여러 개의 컨테이너를 함께 정의하고 실행할 수 있는 도구입니다. 여러 서비스를 정의한 docker-compose.yml 파일을 작성하고, 이를 통해 여러 컨테이너를 동시에 관리할 수 있습니다.

  • docker-compose.yml 예시:
  • version: '3' services: web: image: nginx ports: - "80:80" db: image: mysql environment: MYSQL_ROOT_PASSWORD: example
  • Compose 파일 실행:
  • docker-compose up

7. 컨테이너 내부로 접근

실행 중인 컨테이너 내부로 접근하여 명령어를 실행하고 싶다면 docker exec 명령어를 사용할 수 있습니다.

docker exec -it <컨테이너 ID 또는 이름> /bin/bash

여기서 -it 옵션은 상호작용 모드로 컨테이너에 접속할 수 있도록 해줍니다.

8. 볼륨 관리

Docker는 데이터를 저장하고 공유하기 위한 볼륨(Volume)을 제공합니다. 볼륨을 사용하면 컨테이너를 삭제하더라도 데이터가 유지됩니다.

  • 볼륨 생성:
  • docker volume create <볼륨 이름>
  • 컨테이너에 볼륨 마운트:
  • docker run -d -v <볼륨 이름>:/path/in/container <이미지 이름>

9. 이미지 푸시 및 배포

Docker Hub와 같은 컨테이너 레지스트리로 이미지를 푸시하여 다른 곳에서 사용할 수 있습니다.

  • 이미지 태그 지정:
  • docker tag <이미지 ID> <Docker Hub 사용자명>/<이미지 이름>:<태그>
  • 이미지 푸시:
  • docker push <Docker Hub 사용자명>/<이미지 이름>:<태그>

결론

Docker는 컨테이너를 사용해 애플리케이션의 일관성을 유지하면서, 개발, 테스트, 배포를 쉽게 할 수 있게 해주는 강력한 도구입니다. Docker 설치 후 기본적인 명령어 사용법을 익히고, Dockerfile과 Docker Compose를 통해 더 복잡한 애플리케이션을 관리할 수 있습니다. Docker의 다양한 기능을 익히면서, 실습을 통해 경험을 쌓는 것이 중요합니다.

반응형