Docker

프랭크 IT·2024년 8월 27일

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

1. Docker 설치

  • Windows, MacOS: Docker Desktop을 설치하세요.

  • Linux: 각 배포판에 맞는 Docker 설치 가이드를 따르세요. 예를 들어, Ubuntu에서 Docker를 설치하려면 다음 명령어를 사용합니다:

    sudo apt-get update
    sudo apt-get install docker.io
    sudo systemctl start docker
    sudo systemctl enable docker

    Docker가 설치되면, 다음 명령어로 설치를 확인할 수 있습니다:

    docker --version

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

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

  • 이미지 다운로드: Docker Hub에서 제공하는 이미지를 다운로드하려면 docker pull 명령어를 사용합니다. 예를 들어, nginx 웹 서버 이미지를 다운로드하려면:

    docker pull nginx
  • 컨테이너 실행: 이미지를 기반으로 컨테이너를 실행하려면 docker run 명령어를 사용합니다. 예를 들어, nginx 웹 서버를 실행하려면:

    docker run -d -p 80:80 nginx

    여기서 -d는 백그라운드에서 실행하라는 의미이고, -p는 호스트의 포트 80을 컨테이너의 포트 80에 매핑하라는 의미입니다.

3. Docker 컨테이너 관리

  • 실행 중인 컨테이너 목록 확인:

    docker ps

    이 명령어는 현재 실행 중인 컨테이너의 목록을 보여줍니다. 모든 컨테이너(중지된 컨테이너 포함)를 보려면 docker ps -a를 사용합니다.

  • 컨테이너 중지:

    docker stop <컨테이너 ID 또는 이름>
  • 컨테이너 시작:

    docker start <컨테이너 ID 또는 이름>
  • 컨테이너 삭제:

    docker rm <컨테이너 ID 또는 이름>

4. Docker 이미지 관리

  • 이미지 목록 확인:

    docker images
  • 이미지 삭제:

    docker rmi <이미지 ID 또는 이름>
  • Docker 이미지 빌드: Dockerfile을 사용하여 직접 이미지를 빌드할 수 있습니다. 프로젝트 디렉토리에 Dockerfile을 작성한 후, 다음 명령어로 이미지를 빌드합니다.

    docker build -t <이미지 이름> .

    여기서 -t 옵션은 이미지에 태그를 지정하는 옵션이며, .은 현재 디렉토리에서 Dockerfile을 찾겠다는 의미입니다.

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의 다양한 기능을 익히면서, 실습을 통해 경험을 쌓는 것이 중요합니다.

profile
AWS, Vue, Java, flutter, Mongodb, Python, Git , EKS, Docker, 독서, 영어, 에어로빅, 자전거, 농구, 바둑, 풋살, 복싱, Guitar, 글쓰기, 랭체인

0개의 댓글