티스토리 뷰

Docker 란?

컨테이너 기술 기반에 오픈소스 플랫폼입니다. 가상 머신이 서버 하드웨어를 가상화하는 방식과 비슷하게 컨테이너는 서버 운영 체제를 가상화합니다.

컨테이너란?
격리를 시켜주는 것. 우리가 사용하고자 하는 os, runtime, jar ... 등
이러한 격리가 가능한 이유는 리눅스(커널)의 cgroup, namespace 기능을 사용합니다.

cgroup: 자원(CPU, 메모리, network bandwidth)에 대한 제어를 가능하게 해주는 리눅스 커널의 기능
namespace: 프로세스를 독립시켜주는 가상화 기술 (시스템, 네트워크 ...)

그 이상은 우리는 복잡하니 이러한 것이다~ 라고만 알고 있자. 결국, 우리는 만들어진 것을 잘 쓰면 된다!!

 

즉, Docker 는 이러한 컨테이너의 작업을 쉽게 사용할 수 있는 오픈소스 툴이라고 생각하면 됩니다.

 

Dockerfile 작성하기

Dockerfile 을 만드는 이유는 이미지를 생성하기 위해서 입니다.

여기서 이미지는 Docker image 애플리케이션 실행을 위한 템플릿으로 여기에는 코드를 실행하기 위한 자원들이 들어있다.

아래는 nextjs 애플리케이션을 실행하기 위한 작업이다. 아래와 같이 루트 디렉토리에 Dockerfile 을 만들어서 작성해준다.

# Node.js 18을 베이스 이미지로 사용
FROM node:18-alpine

# 작업 디렉토리를 /app으로 설정
WORKDIR /app

# package.json 및 package-lock.json 복사하여 패키지 설치
COPY package*.json ./
RUN npm install

# 소스 코드를 현재 디렉토리로 복사
COPY . .

# Next.js 애플리케이션의 프로덕션 빌드 실행
RUN npm run build

# 컨테이너가 시작될 때 실행할 명령 설정
CMD ["npm", "start"]

 

이제 도커 이미지를 빌드해보자.

docker build -t docker-test .
  1. docker build: Docker 이미지를 빌드하는 명령어입니다.
  2. t docker-test: t 플래그는 이미지의 이름과 태그를 설정하는데 사용됩니다. 여기서 docker-test는 이미지의 이름과 태그를 지정합니다. 이미지의 이름과 태그는 함께 사용되어 이미지이름:태그 형식으로 표현됩니다. 이 경우, docker-test 이미지의 이름과 태그가 설정됩니다.
  3. .: 마지막에 위치한 .은 Dockerfile이 있는 디렉토리를 가리킵니다. Dockerfile을 현재 디렉토리에서 찾아 이미지를 빌드합니다.

이제 docker images 명령어를 실행해서 도커 서버에 이미지가 잘 올라가졌는지를 봅시다.

 

잘 올라가져있는 도커 이미지를 한 번 실행해봅시다.

docker run -p 3000:3000 docker-test;

 

  1. docker run: Docker 컨테이너를 실행하는 명령어입니다.
  2. p 3000:3000: p 플래그는 포트 포워딩을 설정하는데 사용됩니다. 이 플래그를 사용하여 호스트 시스템의 포트와 컨테이너의 포트를 연결합니다. 이 경우, 호스트 시스템의 3000 포트를 컨테이너의 3000 포트에 연결합니다. 즉, 호스트의 3000 포트로 들어오는 요청이 컨테이너의 3000 포트로 전달됩니다.
  3. docker-test: 실행할 Docker 이미지의 이름 또는 ID를 지정합니다. 이 경우, docker-test 이미지를 실행합니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함