일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- ksql
- 친절한 SQL 튜닝
- 리눅스
- 리팩토링 2판
- multipart테스트
- Stream
- JPA
- vue.js
- git
- findTopBy
- @Transactional Propagation
- Spring Cloud Netflix
- 자바 ORM 표준 JPA 프로그래밍 정리
- intellij 즐겨찾기
- Linux
- 자바 ORM 표준 JPA 프로그래밍
- CompletableFuture
- #docker compose
- 마이크로 서비스
- aws
- @TransactionalEventListener
- intellij 핵심 단축키
- ksqldb
- IntelliJ
- java
- 백명석님
- HandlerMethodArgumentResolver
- intellij favorites
- 원격 브랜 삭제
- javascript case
- Today
- Total
시그마 삽질==six 시그마
Dockerfile 본문
도커파일은 도커 인프라구성 관리를 하는 파일임
도커파일에는 베이스가 되는 이미지에 각종 미들웨어를 설치 및 설정하고 애플리케이션 실행기반의 모든 구성 정보를 기술
도커파일은 명령 인수 라는 기본 서식을 사용. 명령은 대문자가 관례
FROM | 베이스 이미지 지정 | VOLUME | 볼륨 마운트 |
RUN | 명령 실행 | USER | 사용자 지정 |
CMD | 컨테이너 실행명령 | WORKDIR | 작업 디렉토리 |
LABEL | 라벨설정 | ARG | 도커파일 안의 변수 |
EXPOSE | 포트 익스포트 | ONBUILD | 빌드 완료 후 실행되는 명령 |
ENV | 환경변수 | STOPSIGNAL | 시스템 콜 시그널 설정 |
ADD | 파일/디렉토리 추가 | HEALTHCHECK | 컨테이너의 헬스 체크 |
COPY | 파일 복사 | SHELL | 기본 쉘 설정 |
ENTRYPOINT | 컨테이너 실행 명령 |
1. From
도커파일은 어떤 Docker 이미지로부터 생성할지 정보를 기술하는것부터 시작함.
이것을 베이스 이미지라 부름
From [이미지명]
From [이미지명] :[태그명]
2. RUN
FROM에서 지정한 베이스 이미지에 대해 애플리케이션/미들웨어를 설치 및 설정시 RUN 사용
1)Shell 형식 기술
명령의 지정을 쉘에서 실행하는 형식으로 기술
RUN apt-get install -y nginx
2)Exec 형식 기술
shell형식으로 명령 기술시 /bin/sh에서 실행되지만 Exer 형식으로 기술시 쉘 경유 없이 직접 실행됨
또다른 쉘 사용원할시 실행원하는 명령 지정해서 사용가능
RUN ["apt-get", "install", "-y" ,"nginx"]
RUN ["/bin/bash","-c","apt-get install -y nginx"]
3. CMD
RUN명령은 이미지를 작성하기 위해 실행하는 명령을 기술함
이미지를 바탕으로 생성된 컨테이너 안에서 명령을 실행하려면 CMD 명령사용
도커파일에서 한개의 CMD 명령만 사용가능 여러개 기정시 마지막 명령만 유효
1)Shell 형식 기술
CMD nginx -g 'daemon off;'
2)Exec 형식 기술
CMD ["nginx","-g","daemon off;"]
4. ENTRYPOINT
ENTRYPOINT명령에서 지정한 명령은 도커파일에서 빌드한 이미지로부터 도커컨테이너를 시작하기 때문에
docker container run 명령 실행시 실행됨
1)Shell 형식 기술
ENTRYPOINT nginx -g 'daemon off;'
2)Exec 형식 기술
ENTRYPOINT ["nginx","-g","daemon off;"]
CMD vs ENTRYPOINT
CMD는 docker container run 명령 실행시 만약 run 뒤에 신규 명령을 주면 도커파일의 명령을 무시하고 신규 명령을 우선실행함.
ENTRYPOINT는 그러지 않음.
5. ONBUILD
자신의 도커파일로 생성한 이미지를 다른 도커파일에서 베이스 이미지로 사용할때 실행하고 싶은 명령을 기술
6. ENV
도커파일 안에서 환경변수를 설정하고 싶을때 ENV사용함
ENV [key] [value]
1. key value형으로 지정
ENV myName "Hong gildong"
ENV myCar sonata k5 k7
2. key=value형으로 지정
ENV myName="Hong gildong" \
myCar=sonata \k5 \k7
7. WORKDIR
도커파일에서 정의한 명령을 실행하기 위한 작업용 디렉토리를 지정
WORKDIR은 RUN,CMD,ENTRYPOINT,COPY,ADD 명령을위한 작업용 디렉토리 지정하는것임
ENV DIRPATH /first
ENV DIRNAME second
WORKDIR $DIRPATH/$DIRNAME
RUN ["pwd"]
8. USER
이미지 실행이나 도커파일의 RUN,CMD,ENTRYPOINT명령을 실행하기 위한 사용자 지정시 USER명령 사용
USER aaa
RUN touch index.html
USER bbb
RUN touch hello.txt
9. LABEL
이미지에 버전 정보나 작성자 정보, 코멘트 등과 같은 정보를 제공할 때는 LABEL 명령을 사용함
LABEL <키> <값>
LABEL <키>=<값>
10. EXPOSE
컨테이너 공개 포트 번호를 지정할때 EXPOSE 사용
EXPOSE 8080
11. ADD
이미지에 호스트상의 파일이나 디렉토리 추가할때 사용
압축해제도 해줌( copy와의 차이)
ADD <호스트의 파일경로> <도커 이미지파일경로>
ADD ["<호스트의 파일경로>" "<도커 이미지 파일경로>"]
ADD host.html /docker_dir/
ADD hos* /docker_dir/
ADD xxx.tar.gz /docker_dir/
12. COPY
이미지에 호스트상의 파일이나 디렉토리를 복사할때 COPY 사용
COPY <호스트의 파일경로> <도커 이미지파일경로>
COPY ["<호스트의 파일경로>" "<도커 이미지 파일경로>"]
13. VOLUME
볼륨은 데이터를 컨테이너에 저장하지 않고 호스트에 저장하도록 설정
14. 도커파일로부터 도커 이미지 만들기
docker build -t [생성할 이미지명]:[태그명] [Dockerfile 위치]
1)docker build -t hello-world:1.0 .
Dockerfile 내용
From centos:centos7
2)docker build -t nginxtest .
Dockerfile 내용
From ubuntu:latest
RUN apt-get update && apt-get install -y -q nginx
COPY index.html /usr/share/nginx/html/
CMD ["nginx","-g","daemon off;"]
'프로그래밍 > Docker' 카테고리의 다른 글
docker-compose(docker compose) (0) | 2020.08.06 |
---|---|
docker 명령어 (0) | 2020.05.05 |
도커란 무엇인가? (0) | 2020.05.05 |