도커(Docker)란 무엇일까요?
도커(Docker)는 애플리케이션을 컨테이너화하여 배포, 관리, 실행할 수 있게 도와주는 오픈소스 플랫폼입니다. 도커를 사용하면 애플리케이션과 그 종속성을 하나의 단위로 묶어, 어느 환경에서든 일관되게 실행할 수 있습니다. 이 글에서는 도커 환경을 구축하는 방법을 단계별로 자세히 알아보겠습니다.
1. 도커 설치
도커 설치는 운영체제에 따라 조금씩 다릅니다. 각 운영체제에 맞는 설치 방법을 소개합니다.
Windows
- Docker Desktop for Windows 다운로드 페이지로 이동합니다.
- 설치 파일을 다운로드하여 실행합니다.
- 설치 도중에 Hyper-V를 활성화하라는 메시지가 나타나면 활성화합니다.
- 설치가 완료되면 Docker Desktop을 실행하고 기본 설정을 완료합니다.
macOS
- Docker Desktop for Mac 다운로드 페이지로 이동합니다.
- 설치 파일을 다운로드하여 실행합니다.
- 응용 프로그램 폴더에 Docker를 드래그하여 설치합니다.
- 설치가 완료되면 Docker Desktop을 실행하고 기본 설정을 완료합니다.
Linux
1. 패키지 업데이트
sudo apt-get update2. 필수 패키지 설치
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common3. Docker GPG 키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -4. Docker 저장소 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"5. Docker 설치
sudo apt-get update
sudo apt-get install docker-ce6. 도커 서비스 시작 및 확인
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker2. 도커 기본 명령어
도커가 설치되었다면, 기본 명령어를 통해 도커를 사용할 수 있습니다.
도커 버전 확인
docker --version도커 이미지 목록 보기
docker images도커 컨테이너 목록 보기
docker ps3. 도커 이미지와 컨테이너
이미지(Image)는 컨테이너(Container)를 생성하는 템플릿 역할을 합니다. 컨테이너는 이미지로부터 생성된 실행 가능한 단위입니다.
이미지 다운로드 및 실행
1. 이미지 다운로드 및 실행
도커 허브(Docker Hub)에서 이미지를 다운로드하고 컨테이너를 실행합니다. 예를 들어, Nginx 이미지를 다운로드하고 실행하려면 다음 명령어를 사용합니다:
docker run -d -p 80:80 --name mynginx nginx이 명령어는 Nginx 컨테이너를 백그라운드에서 실행하고, 호스트의 80번 포트를 컨테이너의 80번 포트에 매핑합니다.
컨테이너 관리
실행 중인 컨테이너 목록 보기
docker ps모든 컨테이너 목록 보기
docker ps -a컨테이너 중지
docker stop <컨테이너 ID 또는 이름>컨테이너 시작
docker start <컨테이너 ID 또는 이름>컨테이너 삭제
docker rm <컨테이너 ID 또는 이름>4. Dockerfile 작성
Dockerfile은 이미지를 생성하기 위한 스크립트입니다. 예를 들어, 간단한 Node.js 애플리케이션을 위한 Dockerfile을 작성해 보겠습니다.
1. 프로젝트 디렉토리 생성하기
프로젝트 디렉토리를 생성하고, 해당 디렉토리로 이동합니다:
mkdir mynodeapp
cd mynodeapp2. `app.js` 파일 생성하기
const http = require('http');
   const hostname = '0.0.0.0';
   const port = 3000;
   const server = http.createServer((req, res) => {
     res.statusCode = 200;
     res.setHeader('Content-Type', 'text/plain');
     res.end('Hello World\n');
   });
   server.listen(port, hostname, () => {
     console.log(`Server running at http://${hostname}:${port}/`);
   });3. `package.json` 파일 생성하기
{
     "name": "mynodeapp",
     "version": "1.0.0",
     "description": "My Node.js Docker App",
     "main": "app.js",
     "scripts": {
       "start": "node app.js"
     },
     "dependencies": {
       "express": "^4.17.1"
     }
   }4. Dockerfile 작성하기
# 베이스 이미지 설정
   FROM node:14
   # 작업 디렉토리 설정
   WORKDIR /usr/src/app
   # 패키지 파일 복사
   COPY package*.json ./
   # 종속성 설치
   RUN npm install
   # 소스 코드 복사
   COPY . .
   # 애플리케이션 포트 설정
   EXPOSE 3000
   # 애플리케이션 실행 명령어
   CMD ["node", "app.js"]5. 도커 이미지 빌드
docker build -t mynodeapp .6. 도커 컨테이너 실행
docker run -d -p 3000:3000 --name mynodeapp-container mynodeapp이제 `http://localhost:3000`에서 “Hello World” 메시지를 확인할 수 있습니다.
5. Docker Compose
Docker Compose는 여러 컨테이너를 정의하고 실행할 수 있는 도구입니다. `docker-compose.yml` 파일을 작성하여 여러 서비스를 구성할 수 있습니다.
Docker Compose 설치
- Windows와 macOS에서는 Docker Desktop에 Docker Compose가 포함되어 있습니다.
- Linux에서는 별도로 설치해야 합니다:
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-composedocker-compose.yml 예제
version: '3'
services:
  web:
    image: mynodeapp
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/usr/src/app
    depends_on:
      - db
  db:
    image: mongo
    ports:
      - "27017:27017"이 예제에서는 Node.js 애플리케이션과 MongoDB 데이터베이스를 정의합니다.
6. 요약
- 도커 설치: 운영체제에 맞게 Docker Desktop 또는 Docker Engine을 설치합니다.
- 도커 기본 명령어: 도커 명령어를 사용하여 이미지를 다운로드하고, 컨테이너를 실행하고 관리합니다.
- Dockerfile 작성: 이미지를 생성하기 위한 스크립트를 작성합니다.
- Docker Compose: 여러 컨테이너를 정의하고 실행할 수 있는 도구를 사용합니다.
이 과정들을 통해 도커 환경을 성공적으로 구축하고 애플리케이션을 컨테이너화할 수 있습니다. 도커를 활용하면 개발 환경의 일관성을 유지하고, 배포 과정을 단순화할 수 있습니다.