Dockerfile 简单使用实例
Sat, Dec 31, 2016如何使用
Dockerfile 用来创建一个image,包含了用户安装的软件依赖等。
例: 当前目录下包含Dockerfile,使用命令build来创建新的image,并命名为 explame/explame:v1
docker built -t explame/explame:v1 .
Dockerfile 关键字
Dockerfilede 的基本格式
# Comment
INSTRUCTION agruments
FROM
基于某个镜像,例:
FROM ubuntu:14.04
RUN
执行镜像构建、安装等。
RUN echo hello
MAINTAINER
镜像构建者信息等。
MAINTAINER XXX < XX@XX.com >
CMD
容器启动时执行的命令,Dockerfile 只能包含一个 CMD ,多个只执行最后一个。 CMD 主要用于容器启动时默认执行的命令,当Docker run command的命令匹配到CMD command时,会替换CMD执行的命令。格式如:
CMD echo hello world
CMD ["echo", "hello world"]
ENTRYPOINT
类似于CMD,区别在于命令不可替换,和 CMD 可组合使用。例:
ENTRYPOINT [“/bin/echo”] CMD [“hello word”]
USER
指定容器运行时的用户。
EXPOSE
暴露容器的端口,使宿主机能够通过 docker run -p 使用。例:
EXPOSE port
EXPOSE port1 port2 port3
docker run -p port
docker run -p host_port1:port1 -p host_port2:port2 host_port3:port3 ...
ENV
设置变量,在 RUN 构建镜像以及容器启动后均可使用的变量。例:
ENV HOME /root
ADD 与 COPY
容器构建时的命令,构建时命令将文件从容器外复制到容器内,两者区别在于ADD能从网络中下载。所有复制到容器内的文件及文件夹权限为 755 ,uid 、 gid 为 0 。如果复制的源为目录,则将目录下的文件全部复制到指定地,不包括目录;复制源为可识别的压缩文件,docker自动解压到到容器内指定位置;如何复制源为文件且复制目标不以 / 结束时,docker将文件复制到容器内并改名为指定名字。
VOLUME
构建时命令。允许本地文件挂在到容器中。
WORKDIR
构建时命令。重置容器的当前工作路径。
ONBUILD
构建不运行,容器使用时运行的命令。