FROM centos:7
MAINTAINER jaeyoung byun <test@gmail.com>
LABEL description="This is my multiline description of the software\
date="2020.2.5“
RUN yum install -y httpd ENV NAME jaeyoung ARG memory=1024 WORKDIR /tmp/
COPY index.html .
ADD a.tar.gz /tmp/
ADD ftp://59.29.224.87/pub/a.txt /tmp/ RUN useradd -s nologin apache
USER apache
EXPOSE 80 443/tcp
CMD ["/usr/sbin/httpd", "-DFOREGROUND"]
유효한 도커파일은 반드시 FROM 구문으로 시작해야 한다.
RUN <command>
<key>=<value> <key>=<value> <key>=<value> ...
LABEL "com.example.vendor"="ACME Incorporated" LABEL com.example.label-with-value="foo"
LABEL version="1.0"
LABEL description="This text illustrates \
that label-values can span multiple lines."
LABEL multi.label1="value1" multi.label2="value2" other="value3"
LABEL multi.label1="value1" \ multi.label2="value2" \ other="value3"
ARG 로 변수를 지정할 때에는 컨테이너로 기동하는 시점에는 변수 값이 존재하지 않는다.
FROM busybox
COPY test.sh /root/test/env_arg/test.sh
ENV DIR=/root/test/env_arg
#ARG DIR=/root/test/env_arg
RUN echo ${DIR}
CMD ${DIR}/test.sh
docker run -p 80:80/tcp ...
FROM centos:7
LABEL TEST="id"
RUN id
RUN useradd jaeyoung
RUN id
USER jaeyoung
RUN id
RUN useradd -s nologin apache
USER apache
docker container inspect <container-id>
로 경로를 파악할 수 있다. docker run
시점에 호스트 OS의 경로를 변경할 수 있다. # docker run -it -v [호스트OS 경로]:[컨테이너 경로] [이미지명] /bin/bash
docker run -it -v /log/docker/log/:/var/log/ test/vol /bin/bash
처음 사용한 도커 파일에서 빌드할 때 실행되는 명령이 아니며, 빌드된 이미지가 다른 곳에서 재사용될 때 실행되는 기능인데 사용하지 말자.
imutable하게 사용해야 하는 이미지를 조정하기 때문에 옳은 방법이 아니다.
FROM centos:7
RUN touch /etc/yum.repos.d/nginx.repo && echo -e '[nginx]\nname=nage repo\nbaseurl=http://nginx.org/packages/centos/7/$basearch/\ngpgcheck=0\nenabled=1' > /etc/yum.repos.d/nginx.repo
RUN yum -y install nginx curl
HEALTHCHECK --interval=10s --timeout=3s CMD curl -f http://127.0.0.1/ || exit 1
#nginx를 백그라운드로 실행
CMD ["nginx", "-g", "daemon off;"]
watch -n 0.5 docker ps -l
: 체크한 시간 간격으로 명령어를 지속적으로 실행시킨다. 테스트 용으로 자주 사용되며 맥북은 brew install watch
를 통해 설치 후 사용한다.
# docker build [OPTION] <Dockerfile 이 있는 PATH>
docker build -t myapp .
docker build -t myapp:1.0.1 -f /usr/myDockerfiles/Dockerfile .
mkdir <filename>
CMD []
형식으로 가독성을 높이자.docker run test/df ps -aef
# ps -aef가 CMD에 실행된 명령어 대신 실행된다.