标题:
dockerfile介绍(3)
[打印本页]
作者:
look_w
时间:
2019-5-18 10:14
标题:
dockerfile介绍(3)
更多dockfile命令
FROM:指定待扩展的父级镜像(基础镜像)。除了注释以外,在文件开头必须是一个FROM指令,接下来的指令便在这个父级镜像的环境中运行,直到遇到下一个FROM指令。通过添加多个FROM命令,可以在同一个Dockerefile文件中创建多个镜像。
MAINTAINER:声明创建的镜像的作者信息。用户名、邮箱。非必须。
RUN:用来修改镜像的命令,常用来安装库、程序以及配置程序。一条RUN指令执行完毕后,会在当前镜像上创建一个新的镜像层,接下来对的指令会在新的镜像上继续执行。RUN 语句有两种形式:
RUN yum update:是在/bin/sh环境中执行的指令的命令
RUN [“yum”, “update”]:直接使用系统调用exec来执行行。
RUN yum update && yum install nginx:使用&&符号将多条命令连接在同一条RUN语句中。
EXPOSE:用来指明容器内进程对外开放的端口,多个端口之间使用空格隔开。运行容器时,通过参数-P(大写)即可将EXPOSE里所指定的端口映射到主机上另外的随机端口,其他容器或主机就可以通过映射后的端口与此容器通信。同时,我们也可以通过-p(小写)参数将Dockerfile中EXPOSE中没有列出的端口设置成公开的。
ADD:向新镜像中添加文件,这个文件可以是一个主机文件,也可以是一个网络文件,也可以使一个文件夹。
第一个参数:源文件(夹)。如果是相对路径,它必须是相对于Dockerfile所在目录的相对路径。如果是URL,会先下载下来,再添加到镜像里去。
第二个参数:目标路径。如果源文件是主机上zip或者tar形式的压缩文件,Docker会先解压缩,然后将文件添加到镜像的指定位置。如果源文件是一个通过URL指定的网络压缩文件,则不会解压。
VOLUME:在镜像里创建一个指定路径(文件或文件夹)的挂载点,这个容器可以来自主机或者其它容器。多个容器可以通过同一个挂载点共享数据,即便其中一个容器已经停止,挂载点也仍热可以访问。
WORKDIR:为接下来执行的指令指定一个新的工作目录,这个目录可以使绝对目录,也可以是相对目录。根据需要,WORKDIR可以被多次指定。当启动一个容器时,最后一条WORKDIR指令所指的目录将作为容器运行的当前工作目录。
ENV:设置容器运行的环境变量。在运行容器的时候,通过-e参数可以修改这个环境变量值,也可以添加新的环境变量:
docker run -e WEBAPP_PORT=8000 -e WEBAPP_HOST=www.example.com …
CMD:用来设置启动容器时默认运行的命令。
ENTRYPOINT:与CMD类似,也是用来指定容器启动时的默认运行的命令。区别在于:运行容器时添加在镜像之后的参数,对ENTRYPOINT是拼接,CMD是覆盖。
ENTRYPOINT [ “ls”, “-l”]
docker run centos ==> docker run centos ls -l
docker run centos -a ==> docker run centos ls -l -a
我们在运行容器的时候可以通过–entrypoint来覆盖Dockerfile中的指定:docker run gutianlangyu/test –entrypoint echo “hello world”
USER:为容器的运行及接下来RUN、CMD、ENTRYPOINT等指令的运行指定用户或UID。
ONBUILD:触发器指令。构建镜像时,Docker的镜像构建器会将所有的ONBUILD指令指定的命令保存到镜像的元数据中,这些命令在当前镜像的构建过程中并不会执行。只有心的镜像使用FROM指令指定父镜像为这个镜像时,便会触发执行。
使用FROM以这个Dockerfile构建出的镜像为父镜像,构建子镜像时:
ONBUILD ADD . /app/src:自动执行ADD . /app/src
dockfile格式实例
#Version 1.0.1
FROM centos:latest
MAINTAINER ***u "***
u@163.com
"
#设置root用户为后续命令的执行者
USER root
#执行操作
RUN yum update -y
RUN yum install -y java
#使用&&拼接命令
RUN touch test.txt && echo "abc" >>abc.txt
#对外暴露端口
EXPOSE 80 8080 1038
#添加文件
ADD abc.txt /opt/
#添加文件夹
ADD /webapp /opt/webapp
#添加网络文件
ADD
/opt/
#设置环境变量
ENV WEBAPP_PORT=9090
#设置工作目录
WORKDIR /opt/
#设置启动命令
ENTRYPOINT ["ls"]
#设置启动参数
CMD ["-a", "-l"]
#设置卷
VOLUME ["/data", "/var/www"]
#设置子镜像的触发操作
ONBUILD ADD . /app/src
ONBUILD RUN echo "on build excuted" >> onbuild.txt
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0