반응형
명령어는 대소문자를 가리지 않으나 보통 대문자로 사용함
https://docs.docker.com/engine/reference/builder/
아래의 경우 docker 실행 가능한 jenkins 이미지를 만드는 Dockerfile이다.
FROM jenkins/jenkins:jdk11
MAINTAINER bluesky <bluesky@email.net>
USER root
RUN curl -fsSL https://get.docker.com -o get-docker.sh \
&& sh get-docker.sh
RUN usermod -aG docker jenkins
USER jenkins
위 Dockerfile은 다음과 같이 수행된다.
- jdk11 버전의 jenkins image를 가져온 후 (해당 docker image의 유저/그룹 권한은 jenkins/jenkins)
- root user 권한으로
- docker를 설치하고
- docker를 설치할 때 사용된 docker 유저를 jenkins group에 추가하는 작업을 실행한 후 jenkins user로 변경하는 작업을 진행한다.
이때 사용되는 Dockerfile 명령어의 역할은 다음과 같다.
- FROM : 생성할 image의 base가 될 image. 1개 이상 반드시 필요하고 N개 사용도 가능
- MAINTAINER (deprecated) : image를 생성한 개발자 정보, LABEL로 교체해 표현할 수 있음
- LABEL : image에 metadata를 추가, "key:value"의 형태로 저장됨, inspect 명령 사용 시 확인할 수 있는 정보
- RUN : image를 만들기 위해 container 내부에서 명령을 실행.
- USER : 해당 설정 이후 명령어는 해당 사용자 권한으로 실행.
이외에 많이 쓰이는 명령어들은 다음과 같다.
- EXPOSE : 노출할 port를 설정. 다만 명시만 할 뿐이므로 컨테이너 생성 시 -P flag와 함께 사용됨
- CMD : container가 시작될 때마다 실행할 명령어를 설정. Dockerfile당 한 번만 사용
- ENTRYPOINT : CMD와 동일하게 container가 시작될 때 수행할 명령을 설정.
cmd에서 --entrypoint로 parameter를 받아 사용할 수 있는 스크립트의 역할을 할 수 있음 - COPY : local directory에서 읽어 들인 context로부터 image에 file을 복사
- ADD : file을 추가
COPY는 local의 file만 image에 추가할 수 있지만 ADD는 외부 URL 및 tar file에서도 파일을 추가할 수 있음 - WORKDIR : container 내에서 directory 이동 (cd 명령어라고 생각하면 됨)
- ENV : Dockerfile에서 사용될 환경 변수를 지정. 빌드 시 run 명령어에서 -e 옵션을 통해 재선언이 가능함
- VOLUME : 호스트와 공유할 container 내부의 directory 설정
- ARG : 빌드 시 추가로 입력을 받아 Dockerfile 내에서 사용될 변수의 값을 설정. ENV와 마찬가지로 ${}로 호출하여 사용한다. --build-arg 옵션으로 설정함.
- ONBUILD : 빌드된 이미지를 기반으로 하는 다른 이미지가 Dockerfile로 생성될 때 실행할 명령어를 추가
- STOPSIGNAL : container가 정지될 때 사용될 시스템 콜의 종류를 지정. default는 SIGTERM, 빌드 시 --stop-signal 옵션으로 설정할 수 있음
- HEALTHCHECK : container에서 동작하는 application의 상태를 체크하도록 설정
FROM nginx RUN apt-get update -y && apt-get install curl -y HEALTHCHECK : --interval=1m --timeout=3s --retries=3 CMD curl -f http://localhost || exit 1
- SHELL : 사용하고자 하는 shell을 명시. SHELL을 지정하지 않으면 RUN 사용 시 window와 linux가 각각의 환경에 맞춰 명령어가 다르게 수행됨
반응형
'Study > Docker & Kubernetes' 카테고리의 다른 글
kubernetes PersistentVolume, PersistentVolumeClaim 사용해 보기 (0) | 2023.03.11 |
---|---|
Rancher Desktop에서 docker 명령어 사용하기 (0) | 2022.10.20 |
로컬 docker-desktop의 kubernetes (k8s)에 elasticsearch, kibana 설치해보기 (0) | 2022.10.08 |
Window에서 Docker Desktop 없이 docker, kubernetes 사용하기 (Rancher Desktop 사용하기) (0) | 2021.12.01 |
kubernetes kubectl 명령어 모음 (0) | 2021.08.13 |
개인 공부용 Docker Desktop kubernetes 설정 모음 (0) | 2021.06.02 |
Docker Desktop Community 2.3.0.2 이후 Windows 10 Home 지원 시작 (0) | 2020.05.17 |
window docker desktop 2.3.0.2에서 kubernetes volume mount가 되지 않는 현상 (0) | 2020.05.12 |
자주 쓰는 Docker 명령어 (0) | 2020.03.14 |
Docker compose 사용하기 (0) | 2019.08.01 |