IT/DevOps

[Docker] Overview, Application containerize하기

kykyky 2024. 2. 4. 19:24

 

 


Overview


 

 

Docker는 우리가 만드려는 Application을 우리의 infrastructure(e.g. 호스트 컴퓨터?)로부터 분리할 수 있게 해줍니다. 

따라서 이 Application의 배포가 더 용이해집니다.

 

 

✅아주 큰 구조

출처: https://docs.docker.com/get-started/overview/

 

 

 

✅그 중, Docker File & Docker Image & Docker Container의 관계

 

 

Docker Container

 

한 컴퓨터 내에서 여러 서비스를 진행하게 되었을 때, 각 서비스마다 요구하는 프로그램의 버전이 다를 수 있습니다.

따라서, 각 서비스마다 요구하는 특정 버전의 프로그램들끼리만 이 Container에 넣어둔 것입니다.

 

 

Docker Image

 

특정 서비스가 요구하는 환경을 기록해두기 위해, linux 컴퓨터 상에서 특정 상태를 캡처하여 박제해놓은 것입니다.

     eg) node image: linux에 node.js가 설치된 상태를 그대로 박제하여 클라우드에 올려놓은 것

하나의 Image로, Container를 몇개든지 만들어낼 수 있습니다.

 

 

Dockerfile

 

Docker Image에 대한 설계도입니다. 

 

 

 

 

출처: https://www.googlecloudcommunity.com/gc/Community-Blogs/How-to-containerize-RabbitMQ-and-deploy-it-on-Cloud-Run/ba-p/624390

 

 

 

✅이렇게 해서 뭐가 좋은가?

 

서버로의 App 배포가 편리해집니다.

: 서버 컴퓨터에서는 개발 컴퓨터로부터 받은 코드 & 설계도를 가지고, 서버 컴퓨터 내에 동일하게 Container를 설치하면 되니까요.

 

 

 


Containerize an application


 

이제 application을 containerize하는 실습을 해보겠습니다.

 

 

✅1. Application 구성하는 코드들 다운받기

 

App을 갖고 뭘 하려면 당연히 App 소스코드가 먼저 필요합니다.

 

원하는 디렉토리에서 아래 명령어를 통해 파일을 다운받읍시다.

git clone https://github.com/docker/getting-started-app.git

 

 

✅2. Dockerfile, .dockerignore 만들기

 

자 이제 가장 근본이 되는 설계도, 즉 Dockerfile을 만들어봅시다.

 

 

getting-started-app 폴더 안에다가, Dockerfile이라는 빈 파일을 만듭시다. (Dockerfile.txt가 아니라 Dockerfile입니다.)

아래 명령어를 통해서도 가능합니다.

touch Dockerfile

 

 

Dockerfile에다가 아래와 같이 채워넣어줍니다.

# syntax=docker/dockerfile:1

FROM node:18-alpine
WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn install --production
COPY . .

CMD ["node", "src/index.js"]

 

 

 

그 다음, Dockerfile과 같은 위치에 .dockerignore라는 파일을 생성하고,

이 안에 node_modules라고 입력합니다.

 

✅3. Docker Image Build하기

 

이제 Dockerfile을 바탕으로 Image를 build해 봅시다. 

 

 

getting-started-app 폴더 위치에서 아래 명령어를 통해 Image를 Build합니다.

docker build -t getting-started .

 

 

잘 생성됐나 확인하기 위해 아래 명령어를 실행해보면 (아무 위치에서나), Image 리스트가 뜹니다.

docker images

 

 

 

✅4. Docker Container 시작하기

 

최종적으로, Image를 바탕으로 Container를 시작해 App을 실행해봅시다.

 

 

아래 명령어를 통해 Container를 시작합니다. (아무 위치에서나)

docker run -dp 127.0.0.1:3000:3000 getting-started

 

 

잘 시작됐나 확인하기 위해 아래 명령어를 실행해보면 (아무 위치에서나), Container 리스트가 뜹니다.

docker ps

 

 

 

이로써 우리는 이 App을 실행할 수 있습니다. 아래 주소를 브라우저에 입력해 접속할 수 있고, 이런저런 기능이 동작합니다.

http://localhost:3000

 

 


 

 

감사합니다~!