본문 바로가기

가상 머신/Docker

[ VM / Docker ] Docker 사용하기

반응형

Docker는 애플리케이션을 컨테이너라는 독립된 환경에서 실행할 수 있게 해주는 오픈 소스 플랫폼입니다. 이를 통해 개발자는 어디서든 일관된 환경에서 애플리케이션을 실행하고 관리할 수 있습니다. Docker를 사용하면 코드가 어디서 실행되든 동일한 결과를 얻을 수 있으므로 개발, 테스트, 배포 과정이 간소화됩니다. 아래에 Docker를 시작하는 데 필요한 기본적인 개념과 명령어들을 소개합니다.

1. Docker 설치

Docker를 사용하기 위해서는 먼저 Docker를 시스템에 설치해야 합니다.

  • Windows: Docker Desktop for Windows
  • macOS: Docker Desktop for Mac
  • Linux: 각 배포판에 맞는 Docker 패키지 (Ubuntu, CentOS 등)

설치 링크: Docker 설치

2. Docker 기본 개념

  • 이미지 (Image): 컨테이너의 실행 환경과 애플리케이션을 포함하는 읽기 전용 템플릿입니다. 예를 들어, Ubuntu, MySQL, Nginx와 같은 이미지를 사용할 수 있습니다.
  • 컨테이너 (Container): 이미지를 기반으로 실행되는 독립된 애플리케이션 환경입니다. 여러 컨테이너를 동시에 실행할 수 있습니다.
  • Dockerfile: 이미지를 빌드하기 위한 설정 파일입니다. 애플리케이션이 실행되는 환경을 정의합니다.
  • Docker Hub: Docker 이미지를 공유하고 관리할 수 있는 온라인 저장소입니다.

3. Docker 사용 기본 명령어

Docker를 설치한 후에는 아래의 명령어들을 사용하여 Docker를 조작할 수 있습니다.

1. Docker 이미지 다운로드

Docker Hub에서 이미지를 다운로드 받습니다.

docker pull [이미지 이름]

예: docker pull ubuntu

2. Docker 컨테이너 실행

이미지를 기반으로 컨테이너를 실행합니다.

docker run [옵션] [이미지 이름]

예: docker run -it ubuntu /bin/bash

  • -it: 상호작용 모드로 실행 (터미널 연결)
  • -d: 백그라운드에서 실행 (디태치드 모드)
  • -p: 포트 매핑 (예: -p 8080:80)

3. 실행 중인 컨테이너 확인

현재 실행 중인 모든 컨테이너를 확인합니다.

docker ps

4. 모든 컨테이너 확인 (실행 중지 포함)

docker ps -a

5. 컨테이너 중지

실행 중인 컨테이너를 중지합니다.

docker stop [컨테이너 ID 또는 이름]

6. 컨테이너 시작

중지된 컨테이너를 다시 시작합니다.

docker start [컨테이너 ID 또는 이름]

7. 컨테이너 삭제

중지된 컨테이너를 삭제합니다.

docker rm [컨테이너 ID 또는 이름]

8. Docker 이미지 빌드

Dockerfile을 기반으로 이미지를 빌드합니다.

sudo apt-get install python3 //docker-compose needs distutils
docker build -t [이미지 이름] [Dockerfile 경로]

9. Dockerfile 예제

다음은 간단한 Dockerfile 예제입니다. 이 파일은 nginx 웹 서버를 기반으로 이미지를 생성합니다.

# 베이스 이미지로 nginx를 사용
FROM nginx:latest

# 컨테이너 내의 작업 디렉토리 설정
WORKDIR /usr/share/nginx/html

# 현재 디렉토리의 파일들을 컨테이너의 작업 디렉토리로 복사
COPY . .

# 기본 포트 노출
EXPOSE 80

이 Dockerfile을 사용하여 이미지를 빌드할 수 있습니다.

docker build -t my-nginx-image .

4. Docker Compose

Docker Compose는 여러 컨테이너를 정의하고 실행할 수 있는 도구입니다. docker-compose.yml 파일을 사용하여 서비스를 정의할 수 있습니다.

docker-compose 설치

# Docker Compose 업데이트
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

docker-compose.yml 자세한 설명

docker-compose.yml 예제

version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
  redis:
    image: redis:latest

이 파일을 사용하여 두 개의 서비스를 한 번에 실행할 수 있습니다.

docker-compose up

5. Docker 관리 및 모니터링

  • 로그 확인: 컨테이너의 로그를 확인할 수 있습니다.
docker logs [컨테이너 ID 또는 이름]
  • 컨테이너 접속: 실행 중인 컨테이너에 들어가서 명령을 실행할 수 있습니다.
docker exec -it [컨테이너 ID 또는 이름] /bin/bash

6. 참고 자료

Docker는 처음에는 조금 복잡하게 느껴질 수 있지만, 조금만 사용해 보면 매우 강력하고 유용한 도구임을 알 수 있습니다. 기본적인 사용법을 익힌 후에는 좀 더 고급 기능과 개념을 학습하여 프로젝트에 적용해 보세요.

반응형