DOCKERFILE(5) Docker User Manuals DOCKERFILE(5) (NAME) Dockerfile - Docker (INTRODUCTION) Dockerfile Docker . Makefile . Docker Dockerfile . Dockerfile . Dockerfile . Dockerfile docker build Dockerfile . (SYNOPSIS) INSTRUCTION arguments : FROM image (DESCRIPTION) Dockerfile Docker . Dockerfile Makefile . (USAGE) docker build . -- . (context) . Docker CLI. . Docker CLI "Sending build context to Docker daemon" . docker build -t repository/tag . -- (tag) . Docker (ID) . Docker . Docker . docker build . (FORMAT) FROM image FROM image:tag FROM image@digest -- FROM . Dockerfile FROM . . (pull) . -- FROM Dockerfile . -- FROM Dockerfile . FROM . -- (tag) FROM Docker latest . . -- (digest) FROM Docker latest . . MAINTAINER -- Author . (URL) . RUN -- RUN : # the command is run in a shell - /bin/sh -c RUN # Executable form RUN ["executable", "param1", "param2"] -- RUN . Dockerfile . -- RUN Docker . . exec (shell string munging) . exec RUN /bin/sh . exec JSON (") ('). CMD -- CMD : # Executable form CMD ["executable", "param1", "param2"] # Provide default arguments to ENTRYPOINT CMD ["param1", "param2"] # the command is run in a shell - /bin/sh -c CMD command param1 param2 -- CMD Dockerfile . CMD CMD . CMD . . ENTRYPOINT . shell exec CMD . CMD /bin/sh -c : exec JSON (") ('). FROM ubuntu CMD echo "This is a test." | wc - -- command JSON . CMD . : FROM ubuntu CMD ["/usr/bin/wc","--help"] -- ENTRYPOINT CMD . docker run CMD . RUN CMD . RUN . CMD . LABEL -- LABEL = [= ...] LABEL [ ] LABEL [ ] ... LABEL . LABEL - (key-value) . LABEL . LABEL . LABEL com.example.vendor="ACME Incorporated" LABEL com.example.vendor "ACME Incorporated" LABEL com.example.vendor.is-beta "" LABEL com.example.vendor.is-beta= LABEL com.example.vendor.is-beta="" (label) . - . LABEL FROM. key . docker inspect . STOPSIGNAL -- STOPSIGNAL STOPSIGNAL . SIG SIGKILL syscall 9. SIGTERM . --stop-signal docker-run(1) docker-create(1) . EXPOSE -- EXPOSE [...] EXPOSE Docker . Docker (port redirection) . ENV -- ENV ENV . RUN ENTRYPOINT CMD . = . ENV . docker inspect docker run --env = . "ENV DEBIAN_FRONTEND=noninteractive" : docker run -t -i image bash ADD -- ADD : ADD # Required for paths with whitespace ADD ["",... ""] ADD URL . ( ) . WORKDIR . (tar, gzip, bzip2 ) (unpack) . URL . 0755 uid gid 0 . COPY -- COPY : COPY # Required for paths with whitespace COPY ["",... ""] COPY . ( ) URL . WORKDIR . COPY . 0755 uid gid 0 . ENTRYPOINT -- ENTRYPOINT : # executable form ENTRYPOINT ["executable", "param1", "param2"] # run command in a shell - /bin/sh -c ENTRYPOINT command param1 param2 -- ENTRYPOINT . ENTRYPOINT . ENTRYPOINT docker run . CMD . entrypoint docker run -d -d ENTRYPOINT . JSON ENTRYPOINT ( exec ) CMD . ENTRYPOINT docker run . CMD docker run . ENTRYPOINT CMD /bin/sh -c : FROM ubuntu ENTRYPOINT wc -l - Dockerfile (stdin) ( "-" ) ( "-l" ). CMD : FROM ubuntu CMD ["-l", "-"] ENTRYPOINT ["/usr/bin/wc"] VOLUME -- VOLUME ["/data"] VOLUME (mount point) . USER -- USER daemon UID . USER GID . : USER [user | user:group | uid | uid:gid | user:gid | uid:group ] USER root . USER Dockerfile . WORKDIR -- WORKDIR /path/to/workdir WORKDIR RUN CMD ENTRYPOINT COPY ADD Dockerfile . Dockerfile . WORKDIR . : WORKDIR /a WORKDIR b WORKDIR c RUN pwd pwd a/b/c . ARG -- ARG [=] ARG docker build --build-arg = . Dockerfile . [Warning] One or more build-args [foo] were not consumed Dockerfile ARG ARG . Dockerfile : FROM busybox ARG user1 ARG buildno ... Dockerfile ARG : FROM busybox ARG user1=someuser ARG buildno=1 ... ARG . ARG Dockerfile . Dockerfile : 1 FROM busybox 2 USER ${user:-some_user} 3 ARG user 4 USER $user ... : $ docker build --build-arg user=what_user Dockerfile USER some_user user . USER what_user user what_user . ARG . : github . docker history . ARG ENV RUN . ENV ARG . Dockerfile ENV ARG . 1 FROM ubuntu 2 ARG CONT_IMG_VER 3 ENV CONT_IMG_VER=v1.0.0 4 RUN echo $CONT_IMG_VER : $ docker build --build-arg CONT_IMG_VER=v2.0.1 Dockerfile RUN ARG v2.0.1 v1.0.0 . . ENV ARG ENV : 1 FROM ubuntu 2 ARG CONT_IMG_VER 3 ENV CONT_IMG_VER=${CONT_IMG_VER:-v1.0.0} 4 RUN echo $CONT_IMG_VER ARG ENV . --build-arg : $ docker build Dockerfile Dockerfile CONT_IMG_VER v1.0.0 ENV . ENV . Dockerfile . Docker ARG ARG Dockerfile . o HTTP_PROXY o http_proxy o HTTPS_PROXY o https_proxy o FTP_PROXY o ftp_proxy o NO_PROXY o no_proxy o ALL_PROXY o all_proxy --build-arg : $ docker build --build-arg HTTPS_PROXY=https://my-proxy.example.com . ONBUILD -- ONBUILD [INSTRUCTION] ONBUILD (trigger) . . Docker FROM Dockerfile . . . . python . . ADD RUN . -- Dockerfile (boilerplate) . ONBUILD . (HISTORY) * Zac Dover (zdover at redhat dot com) Dockerfile docker.com. * Brian Goff (cpuguy83@gmail.com) . * Sally O'Malley (somalley@redhat.com). * Addam Hardy (addam.hardy@gmail.com). Docker Community MAY 2014 DOCKERFILE(5)