zoukankan      html  css  js  c++  java
  • Springboot-Dockerfile指令

    1、FROM指定基础镜像。FROM指令是Dockfile文件中的收条命令,启动构建流程后,Docker将会给予该镜像构建新镜像。

    FROM <image>
    或者
    FROM <image>:<tag>
    或者
    FROM <image>:<digest>

     2、RUN执行命令。在镜像的构建过程中执行特定的命令,并生成一个中间镜像。

    RUN <command>
    或者
    RUN ["executable", "param1", "param2"]
    

     3、COPY复制文件

    COPY <源路径>...<目标路径>
    COPY ["<源路径1>",..."目标路径"]
    

     <目标路径>可以是容器的绝对路径,也可以是相对工作目录的相对路径。目标路径不需要实现创建,如果目标目录不存在会在复制文件前先行创建却是穆勒。

    4、ADD添加文件

    ADD <源路径>...<目标路径>
    ADD ["<源路径1>",..."目标路径"]
    

     <源路径>可以是URL,Docker引擎会试图去下载这个链接的文件到目标路径去。

    5、ENV设置环境变了

    ENV <key> <value>
    ENV <key1>=<value1> <key2>=<value2>...
    

     后面的其他指令,以及运行时的应用都可以使用。

    6、EXPOSE为构建的镜像设置监听端口,使容器在运行时监听。

    EXPOSE <port> [<port>...]
    

     EXPOSE指令并不会让容器监听host的端口。

    7、VOLUME用于创建挂载点,即向基于所构建镜像创始的容器添加卷。

    VOLUME ["/data"]

    一个卷可以存在于一个或多个容器的指定目录,该目录可以绕过联合文件系统,并具有以下功能:

    • 卷可以容器间共享和重用
    • 容器并不一定要和其它容器共享卷
    • 修改卷后会立即生效
    • 对卷的修改不会对镜像产生影响
    • 卷会一直存在,直到没有任何容器在使用它

    VOLUME 让我们可以将源代码、数据或其它内容添加到镜像中,而又不并提交到镜像中,并使我们可以多个容器间共享这些内容。

    8、WORKDIR指定工作目录。

    WORKDIR /path/to/workdir
    

     通过WORKDIR设置工作目录后,Dockerfile 中其后的命令 RUN、CMD、ENTRYPOINT、ADD、COPY 等命令都会在该目录下执行

    9、USER指定当前用户

    USER user
    USER user:group
    USER uid
    USER uid:gid
    USER user:gid
    USER uid:group
    

     使用USER指定用户时,可以使用用户名、UID 或 GID,或是两者的组合

    使用USER指定用户后,Dockerfile 中其后的命令 RUN、CMD、ENTRYPOINT 都将使用该用户。镜像构建完成后,通过 docker run 运行容器时,可以通过 -u 参数来覆盖所指定的用户。

    10、CMD用于指定容器启动时所要执行的命令。

    CMD ["executable","param1","param2"]
    CMD ["param1","param2"]
    CMD command param1 param2

    CMD 在容器运行的时候执行,在构建时不进行任何操作。

    11、ENTRYPOINT

    ENTRYPOINT 用于给容器配置一个可执行程序。也就是说,每次使用镜像创建容器时,通过 ENTRYPOINT 指定的程序都会被设置为默认程序。ENTRYPOINT 有以下两种形式:

     
    ENTRYPOINT ["executable", "param1", "param2"]
    ENTRYPOINT command param1 param2
    

    ENTRYPOINT 与 CMD 非常类似,不同的是通过docker run执行的命令不会覆盖 ENTRYPOINT,而docker run命令中指定的任何参数,都会被当做参数再次传递给 ENTRYPOINT。Dockerfile 中只允许有一个 ENTRYPOINT 命令,多指定时会覆盖前面的设置,而只执行最后的 ENTRYPOINT 指令。

    docker run运行容器时指定的参数都会被传递给 ENTRYPOINT ,且会覆盖 CMD 命令指定的参数。如,执行docker run <image> -d时,-d 参数将被传递给入口点。

    也可以通过docker run --entrypoint重写 ENTRYPOINT 入口点。如:可以像下面这样指定一个容器执行程序:

     
    ENTRYPOINT ["/usr/bin/nginx"]
    

    完整构建代码:# Version: 0.0.3

    FROM ubuntu:16.04
    MAINTAINER 何民三 "cn.liuht@gmail.com"
    RUN apt-get update
    RUN apt-get install -y nginx
    RUN echo 'Hello World, 我是个容器'  
       > /var/www/html/index.html
    ENTRYPOINT ["/usr/sbin/nginx"]
    EXPOSE 80

    使用docker build构建镜像,并将镜像指定为 itbilu/test:

     
    docker build -t="itbilu/test" .

    构建完成后,使用itbilu/test启动一个容器: 

    docker run -i -t  itbilu/test -g "daemon off;"

    在运行容器时,我们使用了 -g "daemon off;",这个参数将会被传递给 ENTRYPOINT,最终在容器中执行的命令为 /usr/sbin/nginx -g "daemon off;"

    12、LABEL

    LABEL用于为镜像添加元数据,元数以键值对的形式指定:

    LABEL <key>=<value> <key>=<value> <key>=<value> ...
    

     13、ARG指定传递给构建运行时的变量

    ARG <name>[=<default value>]
    
  • 相关阅读:
    关于接口、抽象、普通类之间的选择
    对象与运行时内存
    maven
    ClassLoader
    股票数据调用示例代码php
    猫否股票策略十三篇-1.选股不重要,重在选时
    老枪的59条制胜法则
    今日趁利好出货又套人无数
    判断趋势的最佳指标---趋势大师(源码、主图、附图、说明、无未来、通达信)
    泰禾集团最近走势诡异,小心被机构戏耍了
  • 原文地址:https://www.cnblogs.com/king-peng/p/10771677.html
Copyright © 2011-2022 走看看