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