개발한 애플리케이션(실행파일)과 운영환경이 모두 들어있는 독립된 공간
개발한 프로그램과 실행관경을 모두 컨테이너로 만들어요
MSA(Mircro Swevice Architecture) 환경의 Polyglot 애플리케이션 운영
Polyglot programming : 다양한 언어를 사용하여 프로그래밍 하는 것
# : comment
FROM : 컨테이너의 BASE IMAGE(운영환경)
MAINTAINER : 이미지를 생성한 사람의 이름 및 정보
LABEL : 컨테이너이미지에 컨테이너의 정보를 저장
RUN : 컨테이너 빌드를 위해 base image에서 실행할 commands
COPY : 컨테이너 빌드시 호스트의 파일을 컨테이너로 복사
ADD : 컨테이너 빌드시 호스트의 파일(tar, url 포함)을 컨테이너로 복사
WORKDIR : 컨테이너 빌드시 명령이 실행될 작업 디렉터리 설정
ENV : 환경변수 지정
USER : 명령 및 컨테이너 실행시 적용할 유저 설정
VOLUME : 파일 또는 디렉토리를 컨테이너의 디렉토리로 마운트
EXPOSE : 컨테이너 동작 시 외부에서 사용할 포트 지정
CMD : 컨테이너 동작 시 자동으로 실행할 서비스나 스크립트 지정
ENTRTYPOINT : CMD와 함께 사용하면서 command 지정 시 사용둘이 같이 썼을 때 ENTRTYPOINT(명령어), CMD(argument)
Dockerfile : container를 만들 수 있도록 도와주는 명령어 집합
- guru라는 사용자에서 hellojs 디렉토리를 만든다.
- 실행할 파일 (hello.js) 만든다.
vi dockerfile을 만들고 그 안에 작성한다.
image를 만들기 위해 build를 실행한다.
latest는 default 값으로 생략해도 된다.
.은 현재 디렉토리에 파일이 있다고 표시
위에 vi dockerfile에서 작성한 대로 step에 맞게 진행된다.
실행을 한다.
curl localhost:8080 을 통해서 작성했던 hello.js파일이 작동하는 것을 알 수 있다.
허브에 올리기위해서 로그인을 한다.
(로그인은 hub.docker.com에 들어가면 아이디를 만든다)
로그인 후 올리렸던 docker image 이름을 해당 유저이름/image이름 으로 다시 바꾼다.
(latest는 default 값으로 생략가능하지만 다른 이름으로 지정할 경우 생략하면 안된다.)
이미지를 확인했을 때 생긴것을 확인할 수 있다.
docker push tmhjk/hellojs:latest 를 통해서 hub에 push한다.
해당 계정 Repositories에 만들어진것을 볼 수 있다.