Docker는 애플리케이션을 컨테이너화하여 격리된 환경에서 실행할 수 있게 해주는 도구야. 이를 통해 개발, 테스트, 배포를 효율적으로 수행할 수 있어. Docker를 처음 사용해보는 사람들을 위해 기본적인 사용법을 설명할게.
1. Docker 설치
Docker를 사용하기 위해서는 먼저 Docker를 설치해야 해. Docker는 Windows, macOS, Linux에서 사용할 수 있어.
- Windows/MacOS: Docker Desktop을 설치해. Docker 공식 웹사이트에서 설치 프로그램을 다운로드할 수 있어.
- Linux: 터미널에서 다음 명령어를 사용해 Docker를 설치할 수 있어 (Ubuntu 예시):설치 후, docker --version 명령어를 실행하여 설치가 올바르게 되었는지 확인해.
- sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
2. Docker 기본 명령어
Docker를 설치했다면, 다음 기본 명령어들을 익혀두면 좋아.
- 이미지 검색: Docker Hub에서 이미지를 검색해.
- docker search <이미지_이름>
- 이미지 다운로드: Docker Hub에서 이미지를 로컬에 다운로드해.예: docker pull nginx
- docker pull <이미지_이름>
- 컨테이너 실행: 특정 이미지를 기반으로 컨테이너를 실행해.예: docker run -d -p 8080:80 nginx
- 이 명령어는 NGINX 웹 서버를 백그라운드에서 실행하고, 호스트의 8080 포트를 컨테이너의 80 포트에 매핑해.
- docker run <옵션> <이미지_이름>
- 실행 중인 컨테이너 확인: 현재 실행 중인 컨테이너 목록을 확인해.
- docker ps
- 모든 컨테이너 확인: 실행 중인 컨테이너뿐만 아니라 정지된 컨테이너도 포함해 모든 컨테이너를 확인해.
- docker ps -a
- 컨테이너 중지: 실행 중인 컨테이너를 중지해.
- docker stop <컨테이너_ID 또는 이름>
- 컨테이너 삭제: 중지된 컨테이너를 삭제해.
- docker rm <컨테이너_ID 또는 이름>
- 이미지 삭제: 로컬에 있는 Docker 이미지를 삭제해.
- docker rmi <이미지_ID 또는 이름>
3. Dockerfile 작성
Dockerfile은 Docker 이미지를 만들기 위한 설정 파일이야. 이를 통해 자신만의 이미지를 만들 수 있어.
예를 들어, 간단한 Python 애플리케이션을 위한 Dockerfile은 다음과 같아:
# 베이스 이미지 설정
FROM python:3.9
# 작업 디렉토리 설정
WORKDIR /app
# 필요 파일 복사
COPY . /app
# 의존성 설치
RUN pip install -r requirements.txt
# 애플리케이션 실행 명령어
CMD ["python", "app.py"]
이 Dockerfile을 사용해 이미지를 빌드하려면 해당 파일이 있는 디렉토리에서 다음 명령어를 실행해:
docker build -t my-python-app .
my-python-app이라는 이름으로 Docker 이미지를 생성하는 명령어야.
4. Docker Compose
Docker Compose는 여러 컨테이너를 함께 정의하고 관리할 수 있는 도구야. 이를 사용하면 복잡한 애플리케이션을 쉽게 구성하고 실행할 수 있어.
예를 들어, 웹 애플리케이션과 데이터베이스를 함께 실행하는 docker-compose.yml 파일은 다음과 같아:
version: '3'
services:
web:
image: my-python-app
ports:
- "5000:5000"
db:
image: postgres
environment:
POSTGRES_USER: example
POSTGRES_PASSWORD: example
이 파일을 사용해 애플리케이션을 실행하려면 다음 명령어를 사용해:
docker-compose up
docker-compose.yml 파일에 정의된 모든 컨테이너가 함께 실행돼.
5. 컨테이너와 볼륨 관리
Docker에서는 데이터를 컨테이너 외부에 저장하기 위해 볼륨을 사용해. 이렇게 하면 컨테이너를 삭제하거나 재시작해도 데이터가 유지돼.
- 볼륨 생성:
- docker volume create my-volume
- 볼륨 사용:
컨테이너 실행 시 볼륨을 마운트할 수 있어: - docker run -d -v my-volume:/app/data my-python-app
- 볼륨 확인:
- docker volume ls
- 볼륨 삭제:
- docker volume rm my-volume
6. 이미지 배포
Docker 이미지를 다른 사람과 공유하거나 배포하려면 Docker Hub에 이미지를 푸시할 수 있어.
- Docker Hub에 로그인:
- docker login
- 이미지 태그 지정:
- docker tag my-python-app username/my-python-app:latest
- 이미지 푸시:이제 이 이미지를 Docker Hub에서 누구나 사용할 수 있어.
- docker push username/my-python-app:latest
결론
이제 Docker의 기본적인 사용법을 이해했어. Docker는 컨테이너화된 애플리케이션을 관리하고 배포하는 데 매우 유용하며, 위의 명령어들을 통해 다양한 작업을 할 수 있어. 처음에는 간단한 프로젝트로 시작하고, 점차 Docker의 고급 기능들을 활용해보는 것이 좋아.