본문 바로가기
Docker

도커 컨테이너 만들기

by 개복이 2021. 8. 12.

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

  • 개발한 Application(실행 파일)과 운영환경이 모두 들어있는 독립된 공간
  • 개발한 프로그램과 실행환경을 모두 컨테이너로 만든다.
  • MSA(Micro Service Architecture) 환경의 Polyglot Application 운영
  • 각각의 Application Service에 맞춰 Container를 만든다.

 

컨테이너를 어떻게 만드는가? Dockerfile 이란?

  • Dockerfile을 이용해 컨테이너를 빌드한다
    (Dockerfile : Container를 만들 수 있도록 도와주는 명령어 집합)
  • Dockerfile 이란?
    • 쉽고, 간단, 명확한 구문을 가진 text file로 Top-Down 해석
    • 컨테이너 이미지를 생성할 수 있는 고유의 지시어(Instruction)를 가진다.
    • 대소문자 구분하지 않으나 가독성을 위해 사용한다.

 

Dockerfile 문법

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

 

Node.js Application 컨테이너 만들기 : hellojs

  • $ mkdir hellojs 명령어를 통해 폴더 생성
  • $ cat > hello.js 명령어를 통해 hello.js 파일 생성 
  • $ vim Dockerfile 명령어를 통해 Dockerfile 생성
  • $ docker build -t hellojs:latest .(점은 현재 디렉토리를 의미) 명령어를 통해 빌드

 

 

Ubuntu 기반의 웹 서버 컨테이너 만들기

 

만들어놓은 Ubuntu 기반의 웹 서버 구동

  • $ docker run -d -p 80:80 --name web webserver:v1
  • 실행중인 컨테이너 삭제는 -f 옵션을 사용해야 한다.
    $ docker rm -f web

 

만들어놓은 컨테이너 배포하기

  • https://hub.docker.com에 아이디가 있어야 한다.
  • $ docker login을 통해 접속
  • image name이 접속한 아이디가 들어가야 한다.
  • $ docker push 명령어를 통해 https://hub.docker.com에 배포 
  • https://hub.docker.com에 배포가 되었는 지 확인

댓글