무엇을 컨테이너로 만드는가?
- 개발한 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에 배포가 되었는 지 확인
'Docker' 카테고리의 다른 글
Docker 컨테이너 사용하기 (0) | 2021.08.18 |
---|---|
컨테이너 보관 창고(Docker Registry) (0) | 2021.08.13 |
도커 컨테이너 살펴보기 (0) | 2021.08.11 |
도커 설치하기 : Ubuntu에 Docker 설치하기 (0) | 2021.08.10 |
도커 설치하기 : Ubuntu 설치 (0) | 2021.08.09 |
댓글