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

99winnmin·2023년 1월 25일
0

Docker

목록 보기
5/16

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

  • 개발한 어플리케이션(실행파일)과 운영환경이 모두 들어있는 독립된 공간을 컨테이너로 구성함
Polyglot Programming : 다양한 언어를 사용하여 프로그래밍하는 것
  • MSA(Micro Service Architecture) 환경의 polyglot 어플리케이션 운영
    -> 각각의 application service에 맞춰 container를 만들어냄

컨테이너를 어떻게 만드는가? - DockerFile

  • Dockerfile을 이용해 컨테이너를 빌드함

Dockerfile

  • 쉽고, 간단, 명확한 구문을 가진 text file로 Top-Down 해석
  • 컨테이너 이미지를 생성할 수 있는 고유의 지시어를 가짐
  • 대소문자 구분x But 가독성을 위해 사용
  • ex)
  $ mkdir build
  $ cd build
  $ vi dockerfile
  FROM node:12
  COPY hello.js  /
  CMD ["node","/hello.js"]
  $ docker build -t <imagename>:<tag> .

예시 dockerfile 문법

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

더 자세한 내용을 공식 DOCS 참조 : https://docs.docker.com/engine/reference/builder/

컨테이너 배포하기

과정

  1. Docker HOST 에서 개발~~
  2. 명령어로 컨테이너 빌드 & image 형태로 disk에 저장
    $ docker build -t hellojs:latest .
  3. hub에 로그인 후 이미지 push하기
    $docker login
    $docker push hellojs:latest
  • 좋은 dockerfile 살펴보기
    허브로 가서 작성된 dockerfile 살펴보기
profile
功在不舍

0개의 댓글

관련 채용 정보