데이터센터프로그래밍09(3)

09-도커파일과 이미지 생성

🔴 도커파일 의미?
◽ Docker-file
: "A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image."
➡ 사용자가 이미지를 조합하기 위해 명령줄에서 호출할 수 있는 모든 명령이 포함된 텍스트 문서
◽ Using docker build
: "Users can create an automated build that executes several command-line instructions in succession."
➡ 도커 빌드를 사용하면 여러 명령줄 명령을 연속적으로 실행하는 자동화된 빌드를 만들 수 있음
🔹 즉, 도커파일은 컨테이너 이미지를 생성하는데 사용되는 텍스트 기반 지침의 스크립트라고 할 수 있음
® 참고문헌 : https://docs.docker.com/engine/reference/builder/

🟠 도커파일 명령어?

  • FROM : image를 지정하는 명령어
  • LABEL : version 정보와 image 설명을 작성하는 명령어
  • CMD : docker container 시작할 때 실행되는 shell 명령을 지정하는 명령어
  • RUN : docker image가 생성되기 전에 수행 할 shell 명령어
  • ENTRYPOINT : docker container 시작할 때 실행되는 명령어
  • EXPOSE : docker container 공개 port 설정하는 명령어
  • ENV : docker container 내부에서 사용할 환경 변수 정하는 명령어
  • WORKDIR : docker container의 작업 디렉토리 설정하는 명령어
  • COPY : docker 클라이언트의 현재 디렉토리에서 파일 추가하는 명령어
  • ADD : file과 디렉토리 or 특정 URL의 데이터를 docker image에 추가하는 명령어
  • SHELL : shell 프로그램을 지정하는 명령 (CMD 명령으로 대체 가능)
  • ARG : dockerfile 내에서 필요한 변수를 설정하는 명령어
  • USER : docker image & container에서 작업하는 사용자 ID를 지정하는 명령어
  • ONBUILD : 새로운 image 생성할 때 실행되는 명령어
  • VOLUME : docker image를 위해 볼륨을 생성하는 명령어

🟡 도커 파일생성 및 이미지 빌드하기 예시_1

# ubuntu:14.04 태그 값 (FROM <이미지 이름>:<태그>)
FROM ubuntu:14.04
MAINTAINER:
# RUN은 Dockerfile이 이미지를 생성하는 과정에서 실행될 명령어
RUN apt-get update
RUN apt-get install -y nginx
RUN echo "this is a ubuntu container"
# 명령을 실행하기 위한 디렉토리를 지정
WORKDIR /etc/nginx
# 이미지에 포함되어 있는 SW를 실행하는데 사용
CMD ["nginx", "-g", "daemon off;"]
# container가 연결을 받는 port
EXPOSE 80
docker build --tag myubuntu:1.0 .
docker image ls
docker run --name myubuntu-nginx -d -p 4000:80 myubuntu:1.0
docker container ls
docker stats
# localhost:4000

🟤 도커 파일생성 및 이미지 빌드하기 예시_2

# 이미지 이름을 'ubuntu'로 함
FROM ubuntu
# Dockerfile이 이미지를 생성하는 과정에서 업데이트, nginx를 설치 후 자동으로 'yes'함 (터미널에서 아래의 명령을 실행)
# apt-get은 리눅스 배포판 중의 하나인 우분투에서 사용할 수 있는 일종의 앱스토어
# update는 설치할 수 있는 프로그램들의 목록을 최신상태로 갱신
RUN apt-get update
RUN apt-get install nginx -y
# 웹브라우저가 요청했을 때 웹서버가 웹페이지의 파일을 찾는 디렉토리
COPY index.html /var/www/html/
# port = 80
EXPOSE 80
# 서버 실행
CMD ["nginx","-g","daemon off;"]
docker build --tag myubuntu:1.0 .
docker image ls
docker run -p 5000:80 myubuntu:1.0
docker container ls
docker stats
# localhost:5000

🦒 주의 🦒

  • Dockerfile 에서 CMD 는 1개만 적용
  • 여러 개를 지정한 경우 마지막 CMD 만이 적용

좋은 웹페이지 즐겨찾기