본문으로 바로가기

Docker 컨테이너 만들기 (이론)

category Docker 2021. 5. 29. 01:59
반응형

1. 무엇을 컨테이너로 만드는 것인가?

*컨테이너 : 개발할 애플리케이션(실행파일)과 운영환경이 모두 들어있는 독립된 공간

컨테이너로 만드는 것은 개발할 프로그램과 실행환경을 모두 컨테이너로 만든다.

MSA(Micro Service Architecture)환경의 Polyglot 애플리케이션 운영

*Polyglot Programming : 다양한 언어를 사용하여 프로그래밍 하는 것.

*MSA 마이크로 서비스 아키텍처

이미지 출처 :boying-blog.tistory.com

기존 모놀리식 아키텍처와 다르게 비즈니스 기능마다 서버를 분리 하였고 분리된 서비스 마다 다른 기술이 적용 가능하다.

각각의 Aplication Service 에 맞춰 Container를 만들어 낸다. (컨테이너를 만들고 관리하기 위해 보편화된 오픈소스가 Docker 이다.)

2. 컨테이너는 어떻게 만드는가? Dockerfile이 뭔가?

Dockerfile을 이용해 컨테이너를 빌드한다.

Dockerfile 의 특징 :

1) 쉽고 간단한, 명확한 구문을 가진 text file이며 Top-Down 해석.

2) 컨테이너 이미지를 생성할 수 있는 고유의 지시어(Instrucion)을 가짐

3) 대소문자 구분 x (그러나 가독성을 위해 사용하는 것이 좋다.)

4) Dockerfile: Container를 만들 수 있도록 도와주는 명령어 집합

파일 작성을 다 했다면.

docker build [옵션] [이미지 파일 명] [만들 디렉토리 위치]

ex) docker build -t kimhangil:man .(현재 디렉토리)

 

명령어 (자주쓰이는)

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

hub.docker.com에 있는 docker file을 많이 참고해 보면 많은 공부가 된다.

3. 내가 만든 컨테이너를 배포하려면?

1) 내가 배포하고자 하는 Hub(public 이든 private 이든)에 인증 절차 수행 (login)

docker login

2) 등록

docker push [내가 만든 이미지 파일]

 

반응형