
2013년 3월 13일 솔로몬 하익스(Solomon Hykes)는 컨테이너 기반 오픈 소스 플랫폼으로, 애플리케이션을 신속하게 개발, 배포할 수 있고 실행할 수 있는 Docker를 발표합니다.
1.Docker의 특징
도커(Docker)는 리눅스에서 운영 체제 수준 가상화의 추상화 및 자동화 계층을 추가적으로 지원하며, 컨테이너 기반으로 가볍고 빠른 실행환경을 제공한다는 특징을 가지고 있습니다. Docker의 특징은 3가지로 정리해볼 수 있습니다.
- 이식성: 다양한 환경에 동일하게 실행 가능(개발, 테스트, 프로덕션)
- 격리성: 애플리케이션과 종속성을 결리하여 충돌을 방지.
- 버전 관리: 이미지의 버전 관리를 통한 쉬운 버전 롤백 가능
2. Docker의 장단점
- 장점
- 빠른 배포: 컨테이너를 통한 애플리케이션의 신속적인 배포 가능
- 효율성: 자원 소모가 적어, 여러 컨테이너를 동시에 실행 가능
- 확장성: 필요에 따른 스케일 업/다운 가능.
- 일관성: 개발 환경과 프로덕션 환경의 일관성을 유지함
- 단점
- 학습 곡선: 새로운 개념과 도구를 배우는 데 많은 시간 소요
- 보안 문제: 컨테이너 간 격리 수준이 VM보다 낮을 수 있음.
- 데이터 관리: 컨테이너의 휘발성으로 인한 데이터 영속성의 문제
3.Docker 컨테이너의 종류
Docker의 컨테이너 종류는 총 4가지로 기본, 데이터베이스, 서비스, CI/CD 컨테이너로 나눌 수 있습니다.
- 기본 컨테이너: 일반적인 애플리케이션을 실행하는 컨테이너.
- 데이터베이스 컨테이너: MySQL, PostgreSQL 등 데이터베이스를 실행하는 컨테이너.
- 서비스 컨테이너: Nginx, Apache와 같은 웹 서버 컨테이너.
- CI/CD 컨테이너: Jenkins, GitLab Runner와 같은 지속성 통합 및 배포 도구.
4.Docker 사용 프로젝트 예시
- 웹 애플리케이션 배포: Node.js, Django, Ruby on Rails 등의 웹 애플리케이션을 Docker로 배포
- 마이크로서비스 아키텍쳐: 여러 서비스가 서로 독립적이게 실행되도록 Docker를 사용해 배포
- 데이터베이스 관리: 데이터베이스 컨테이너를 사용하여 개발 및 테스트 환경에서 데이터베이스 구성.
5.Docker 세팅법
- Docker 설치법
- 운영 체제에 맞는 Docker를 다운받고 설치합니다.
- Docker 설치 완료시 CMD 창에 docker login을 치고 도커에 로그인을 합니다.
- Docker 기본 명령어
- Docker를 설치하고 Docker 데스크톱을 실행 후, 기본 명령어를 통해 컨테이너를 실행해 봅니다.
# Docker 버전 확인
docker --version
# Docker 이미지 다운로드
docker pull nginx
# Docker 컨테이너 실행
docker run -d -p 80:80 nginx
Node.js를 사용해 간단하게 애플리케이션을 만들고 Docker를 사용해 실행해보겠습니다.
// 프로젝트 디렉토리 생성
mkdir docker-node-app
cd docker-node-app
// npm init -y로 package.json 파일 생성
npm init -y
// index.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", "type/plain");
res.end("Hello, Docker With Node.js World!");
});
server.listen(port, hostname, () => {
console.log(`Server is running at http://${hostname}:${port}/`);
});
package.json 파일을 생성해 의존성을 설정하고 Dockerfile을 생성해 아래 내용을 추가합니다.
// pacakge.json 생성
npm init -y
// Dockerfile 생성
# 베이스 이미지
FROM node:14
# 작업 디렉토리 설정
WORKDIR /usr/src/app
# 의존성 파일 복사
COPY package*.json ./
# 의존성 설치
RUN npm install
# 애플리케이션 코드 복사
COPY . .
# 애플리케이션 실행
CMD ["node", "index.js"]
# 컨테이너가 수신할 포트 설정
EXPOSE 3000
터미널에서 다음 명령어로 Docker 이미지를 빌드하고 실행합니다.
# Docker 이미지 빌드
docker build -t docker-node .
# Docker 컨테이너 실행
docker run -d -p 3000:3000 docker-node
docker-desktop에 container 항목을 살펴봅니다.정상적으로 실행되면 컨테이너가 들어갑니다
GitHub - Koras02/docker-node-bloging: https://thinky.tistory.com/category/Back-End/Docker
https://thinky.tistory.com/category/Back-End/Docker - Koras02/docker-node-bloging
github.com
'Back-End > Docker' 카테고리의 다른 글
[Docker] 3장 도커 이미지 다운로드 & 빌드 (0) | 2025.03.19 |
---|---|
[Docker] 2장 도커 이미지 확인 (1) | 2025.02.27 |