> 文章列表 > DockerFile使用方法及注释

DockerFile使用方法及注释

DockerFile使用方法及注释

FROM 指明是基于那个镜像

LABEL 标签

RUN 构建镜像时运行的shell命令

COPY 复制文件到镜像中

ADD 解压压缩包并复制

ENV 设置环境变量

USER 指明运行RUN、CMD、ENTRYPOINT命令时的执行用户

EXPOSE 暴露容器运行的服务端口

WORKDIR 为RUN、CMD、COPY、ADD、ENTRYPOINT指定工作目录

CMD 运行容器时执行,多个只执行最后一个

FROM

指定基础镜像,在此镜像基础上修改数据构建新镜像,可以是本地仓库也可以是远程仓库

格式:FROM 【本地仓库、远程仓库】image 名字 (默认最新版本)或FROM image:tag(指定版本)

RUN

运行基础镜像支持的命令,可以使用多条,指令长可以使用反斜杠黄航

格式:RUN 命令command (-bin/sh -c)或 RUN“/bin/bash”,”-c”,”echo hello cillian”

COPY

复制本地文件到容器内,目标路径不存在会自动创建

格式:COPY cillian/test1 test

注意:这个功能只能用于构建linux容器的dockefile上支持,windows容器上不起作用,运维用户和组的概念在linux和windows之间没法转换,所以仅只用于基于linux系统的容器。

WORKDIR

类似cd命令,为RUN、CMD、ENTRYPOINT配置工作目录,可以使用多个WORKDIR命令,如果后续命令不是绝对路径,就是按照上一级路径的基础上执行

ENTRYPOINT

指定容器启动时执行的命令,多次设置只执行最后一次,被翻译为进入点,这个功能让它像一个可执行程序。

格式:ENTRYPOINT [“executable”, “param1”, “param2”]

例:ENTRYPOINT [“/usr/bin/ls”,“-a”]

CMD [“-l”]

或 ENTRYPOINT command param1 param2 (as a shell)

例:ENTERPOINT ls -l

EXPOSE

让容器在运行时,监听指定端口,默认TCP协议,会将容器中的端口映射为宿主机中的端口,通过宿主机ip和映射后的端口可以访问容器,因为可以避免容器每次运行时的ip随机生成不固定的问题。运行容器上加参数-p指定设置的端口,例如 -p 9001:80 容器80端口映射为宿主机9001端口

格式: EXPOSE port

ENV

在镜像中设置环境变量,设置之后RUN就可以使用这个环境变量

格式: ENV JAVA_HOME /opt/java

构建镜像命令
例: docker build -t cillian/docker -f /cillian/dockerfile

构建nginx镜像

FROM centos:7LABEL maintainer www.baidu.comRUN yum install -y gcc gcc-c++ make \\openssl-devel pcre-devel gd-devel \\iproute net-tools telnet wget curl && \\yum clean all && \\rm -rf /var/cache/yum/*ADD nginx-1.15.5.tar.gz /RUN cd nginx-1.15.5 && \\./configure --prefix=/usr/local/nginx \\--with-http_ssl_module \\--with-http_stub_status_module && \\make -j 4 && make install && \\mkdir /usr/local/nginx/conf/vhost && \\cd / && rm -rf nginx* && \\ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeENV PATH $PATH:/usr/local/nginx/sbinCOPY nginx.conf /usr/local/nginx/conf/nginx.confWORKDIR /usr/local/nginxEXPOSE 80CMD ["nginx", "-g", "daemon off;"]