IT 지식과 노하우/인프라

초보자를 위한 도커(Docker) 사용법

코딩레벨업 2024. 10. 8. 20:48
728x90
반응형

**Docker**는 애플리케이션을 컨테이너라는 격리된 환경에서 실행할 수 있도록 해주는 플랫폼입니다. 초보자들도 도커를 활용하면 개발, 배포, 테스트 환경을 손쉽게 설정할 수 있습니다. 이 글에서는 도커의 기본 개념과 사용법을 소개하고, 간단한 애플리케이션을 실행해보는 예제를 함께 살펴보겠습니다.

---

1. 도커란 무엇인가?

도커는 **컨테이너 기반 가상화** 기술로, 애플리케이션과 그 실행에 필요한 모든 것을 하나의 패키지로 묶어 배포할 수 있도록 해줍니다. 도커를 사용하면 다음과 같은 장점을 누릴 수 있습니다:

- **환경 일관성**: 개발 환경, 테스트 환경, 프로덕션 환경 간의 차이를 줄일 수 있습니다.
- **경량화**: 가상 머신보다 더 가볍고 빠르며, 필요할 때만 리소스를 사용합니다.
- **이식성**: 운영 체제에 독립적으로 애플리케이션을 실행할 수 있습니다.

도커의 주요 개념

  1. **이미지(Image)**: 컨테이너 실행에 필요한 파일, 설정 등을 포함한 읽기 전용 템플릿.
  2. **컨테이너(Container)**: 이미지를 기반으로 실행되는 격리된 애플리케이션 환경.
  3. **도커파일(Dockerfile)**: 이미지를 빌드하기 위한 명령어가 포함된 텍스트 파일.
  4. **레지스트리(Registry)**: 도커 이미지를 저장하고 공유할 수 있는 저장소. (예: [Docker Hub](https://hub.docker.com/))

---

2. 도커 설치하기

도커를 사용하려면 먼저 시스템에 도커를 설치해야 합니다.

Windows / macOS

- 도커 공식 홈페이지에서 [Docker Desktop](https://www.docker.com/products/docker-desktop) 다운로드 및 설치.
- 설치 후 Docker Desktop을 실행하여 도커 데몬(Docker Daemon)이 실행 중인지 확인.

Linux

```bash

패키지 업데이트 및 도커 설치

sudo apt update
sudo apt install docker.io

도커 데몬 실행 및 부팅 시 자동 시작 설정

sudo systemctl start docker
sudo systemctl enable docker
```

설치가 완료되면 터미널에서 다음 명령어로 도커가 제대로 설치되었는지 확인합니다:

```bash
docker --version
```

---

3. 도커 기본 명령어

도커를 다루기 위해서는 몇 가지 기본 명령어를 이해해야 합니다. 여기서는 자주 사용하는 명령어와 그 용도를 소개합니다.

명령어 설명
`docker run` 이미지를 기반으로 컨테이너 실행
`docker pull` 레지스트리에서 이미지 다운로드
`docker ps` 실행 중인 컨테이너 목록 확인
`docker stop` 실행 중인 컨테이너 중지
`docker rm` 컨테이너 삭제
`docker rmi` 이미지 삭제

예를 들어, 아래 명령어는 `hello-world`라는 도커 이미지를 실행하여 테스트합니다:

```bash
docker run hello-world
```

이 명령어는 다음을 수행합니다:

  1. `hello-world` 이미지를 도커 허브에서 다운로드 (`docker pull hello-world`).
  2. 컨테이너를 실행하고, "Hello from Docker!" 메시지를 출력.
  3. 실행이 완료된 후 자동으로 종료.

---

4. 간단한 애플리케이션 실행하기

이번에는 간단한 웹 서버 애플리케이션을 도커 컨테이너로 실행해 보겠습니다. `nginx`라는 유명한 웹 서버를 사용해보겠습니다.

  1. **nginx 이미지 다운로드 및 실행**
    ```bash
    docker run --name mynginx -p 8080:80 -d nginx
    ```

- `--name mynginx`: 컨테이너 이름을 `mynginx`로 설정.
- `-p 8080:80`: 호스트의 8080 포트를 컨테이너의 80 포트에 매핑.
- `-d`: 백그라운드 모드로 실행.

  1. **웹 브라우저로 확인**
    - 브라우저에서 `http://localhost:8080\`에 접속합니다.
    - Nginx 환영 페이지가 보이면 도커가 성공적으로 애플리케이션을 실행한 것입니다.

  2. **컨테이너 중지 및 삭제**
    ```bash
    docker stop mynginx
    docker rm mynginx
    ```

---

5. Dockerfile로 사용자 정의 이미지 만들기

도커의 진정한 강점은 **사용자 정의 이미지**를 만들 수 있다는 점입니다. 예를 들어, 간단한 Python 애플리케이션을 실행하기 위한 이미지를 만들어보겠습니다.

  1. 프로젝트 폴더에 `Dockerfile` 생성:

```dockerfile

베이스 이미지로 Python 사용

FROM python:3.9

애플리케이션 파일 복사

COPY app.py /app/

작업 디렉토리 설정

WORKDIR /app

애플리케이션 실행

CMD ["python", "app.py"]
```

  1. `app.py` 파일 생성:

```python

app.py

print("Hello from Docker!")
```

  1. **이미지 빌드 및 실행**:

```bash

현재 디렉토리의 Dockerfile로 이미지 빌드

docker build -t mypythonapp .

컨테이너 실행

docker run mypythonapp
```

이 명령어를 실행하면 "Hello from Docker!" 메시지가 출력됩니다.

---

6. 도커 컴포즈(Docker Compose) 사용하기

도커 컴포즈는 여러 컨테이너를 정의하고, 일괄적으로 관리할 수 있게 해주는 도구입니다. 예를 들어, 데이터베이스와 웹 애플리케이션을 동시에 실행해야 할 때 유용합니다.

  1. `docker-compose.yml` 파일 생성:

```yaml
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
```

  1. 도커 컴포즈 실행:

```bash
docker-compose up -d
```

이제 `nginx`와 `mysql`이 동시에 실행됩니다.

---

7. 결론

도커는 초보자도 손쉽게 사용할 수 있는 도구로, 개발 환경 설정부터 애플리케이션 배포까지 다양한 상황에서 활용할 수 있습니다.

728x90
반응형
LIST