도커 컨테이너 만들어보기 - 이론

2024. 2. 5. 16:23웹개발/컨테이너

참조 강의 

[따배도] 4-1 도커 컨테이너 만들어보기: 이론편 

 

다음 내용을 학습한다.

* 무엇을 컨테이너로 만드는지?

* 컨테이너를 어떻게 만드는지? Dockerfile이 무엇인지

* 컨테이너를 배포하려면?

 

무엇을 컨테이너로 만드는지?

컨테이너는 개발한 애플리케이션과 운영환경이 모두 들어있는 독립된 공간이다.

node.js를 예로 들면, 먼저 node.js 자체를 설치해야한다. 

이 후 node.js를 사용한 소스코드가 있어야하고 해당 소스코드를 실행해야한다.

 

개발한 프로그램과 실행환경을 모두 컨테이너로 만든다.

MSA 환경의 Polyglot 애플리케이션 운영을 예로 들면 다음과 같다.

전체 e-commerce를 다양한 컨테이너를 사용하여 구현한다. 

예를 들어 Shoping cart만 업데이트한다고 하면 Shopping cart만 업데이트한다. 이렇게 개별적으로 분리된 환경을 구성하는 것을 MSA(Micro Service Architecture)라고 한다. 

각각의 Application Service에 따라 컨테이너를 만든다.

 

컨테이너를 만드는 방법 - Dockerfile

Dockerfile을 사용하여 컨테이너를 빌드한다.

 

Dockerfile 특징

* Dockerfile은 text file로 Top-Down으로 해석한다.

* 컨테이너 이미지를 생성할 수 있는 고유의 지시어(Instruction)을 가진다.

* 대소문자를 구분하지 않으나 가독성을 위해 사용한다.

FROM node:12
COPY hello.js
CMD ["node", "/hello.js"]

위와 같은 Dockerfile을 생성 후 다음 명령로 빌드한다.

docker build -t imagename:tag

 

Dockfile 문법

Dockerfile에서 사용되는 주요 문법은 다음과 같다.

# comment
FROM 컨테이너의 BASE IMAGE(운영환경)
MAINTAINER 이미지를 생성한 사람의 이름 및 정보
LABEL 컨테이너 이미지에 컨테이너의 정보를 저장
RUN 컨테이너 빌드를 위해 base image에서 실행할 commands
COPY 컨테이너 빌드시 호스트의 파일을 컨테이너로 복사
ADD 컨테이너 빌드시 호스트의 파일(tar, url포함)을 컨테이너로 복사
WORKDIR 컨테이너 빌드시 명령이 실행될 작업 디렉터리 설정
ENV 환경변수 지정
USER 명령 및 컨테이너 실행시 적용할 유저 설정
VOLUME 파일 또는 디렉토리를 컨테이너의 디렉토리로 마운트
EXPOSE 컨테이너 동작 시 외부에서 사용할 포트 지정
CMD 컨테이너 동작 시 자동으로 실행할 서비스나 스크립트 지정
ENTRYPOINT CMD와 함께 사용하면서 command 지정 시 사용

 

Dockerfile 예제 - node.js helloworld

다음 명령을 사용하여 dockerfile을 생성 및 빌드할 수 있다.

mkdir build
cd build
vi hello.js
vi dockerfile

 다음과 같이 Dockerfile 편집

FROM node:12
COPY hello.js
CMD ["node", "/hello.js"]

다음 명령어로 hellojs 이미지 빌드

docker build -t hellojs:lastest .

 

컨테이너 배포

빌드가 된 이미지를 Docker Host에서 Docker Hub로 업로드 하기 위해서는 다음과 같은 명령을 진행한다.

docker build -t hellojs:lastest .
docker login
docker push hellojs:lastest

hellojs 이미지를 빌드한 후 로그인을 진행한 후에 해당 이미지를 push하여 업로드한다.

 

Dockfile 참조

다음 Docker hub 사이트에서 Dockerfile이 운영환경별 어떻게 작성되는지 확인할 수 있다.

https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

Deliver your business through Docker Hub Package and publish apps and plugins as containers in Docker Hub for easy download and deployment by millions of Docker users worldwide.

hub.docker.com

파이썬을 예로 들면 다음과 같이 접속을 해서 확인한다.

다음과 같이 github에 Dockerfile이 저장되어 있으며, 해당 파일의 내용을 참조하여 Dockerfile이 전반적으로 어떻게 작성되는지 분석 및 확인할 수 있다.