zoukankan      html  css  js  c++  java
  • Docker--Dockerfile引用及指令集的功能用法

    Dockerfile引用的官网文档:https://docs.docker.com/engine/reference/builder/
    编写Dockerfiles的最佳实践的官网文档:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
    Docker可以通过阅读来自的指令自动构建图像 DockerfileDockerfile是一个文本文档,其中包含用户可以在命令行上调用以组合图像的所有命令。使用docker build 用户可以创建一个连续执行多个命令行指令的自动构建。
    用法
    docker build命令Dockerfile根据上下文构建图像。构建的上下文是指定位置PATH或的文件集URL。这PATH是本地文件系统上的目录。这URL是一个Git存储库位置。
    递归处理上下文。因此,a PATH包括所有子目录,URL包括存储库及其子模块。此示例显示使用当前目录作为上下文的构建命令:
    例如:docker build -f ./Dockerfile -t microsoft/dotnet:v1 .(别忘记了后面有个点,详细了解docker build用法)
    构建由Docker守护程序运行,而不是由CLI运行。构建过程所做的第一件事是将整个上下文(递归地)发送到守护进程。在大多数情况下,最好以空目录作为上下文,并将Dockerfile保存在该目录中。仅添加构建Dockerfile所需的文件。
    警告:不要用你的根目录下,/作为PATH因为它会导致生成到您的硬盘驱动器的全部内容传输到码头工人守护进程。
    要在构建上下文中使用文件,请Dockerfile引用指令中指定的文件,例如COPY指令。要提高构建的性能,请通过向.dockerignore上下文目录添加文件来排除文件和目录。有关如何创建.dockerignore 文件的信息,请参阅此页面上的文档。
    传统上,它Dockerfile被调用Dockerfile并位于上下文的根中。您可以使用-f标志docker build来指向文件系统中任何位置的Dockerfile。
    附菜鸟教程对docker build命令参数的用法http://www.runoob.com/docker/docker-build-command.html
    指令集的功能用法
    Dockerfile有十几条命令可用于构建镜像
    Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数。其产出为一个新的可以用于创建容器的镜像。
    指令
    说明
    FROM
    指定所创建镜像的基础镜像,FROM指令必须指定且需要写在其他指令之前.
    如果本地镜像不存在,会去Docker Hub下载指定镜像,Dockerfile创建多个镜像使用多条FROM语句.
    支持三种格式:
    FROM <image>  FROM <image>:<tag>  FROM <image>@<digest>
    示例:
    FROM microsoft/dotnet:2.2-aspnetcore-runtime
    RUN
    执行命令, 是启动容器时才指定运行的指令
    RUN有两种形式:
    1.RUN <command>shell表单,该命令在shell中运行,默认情况下/bin/sh -cLinuxcmd /S /CWindows 上运行)
    2.RUN ["executable", "param1", "param2"](执行形式)
    示例:
    RUN echo "hello world"
    CMD
    指定启动容器默认执行的命令
    每个Dodckerfile 只能有一条CMD命令,如果指定了多条命令,只有最后一条会被执行
    CMD有三种形式:
    CMD ["executable","param1","param2"](执行形式,这是首选形式)
    CMD ["param1","param2"](作为ENTRYPOINT的默认参数)
    CMD command param1 param2(在Shell中使用)
    示例: CMD [ "dotnet","XXX.dll" ]
    LABEL
    指定生成镜像的元数据标签信息
    格式: LABEL <KEY>=<VALUE>
    示例: LABEL version=”1.0”
    MAINTAINER
    指定维护者信息(已过时),格式为MAINTAINER name
    建议使用LABEL代替,例如:LABEL maintainer=”cxt@docker.com”
    EXPOSE
    声明镜像内服务所监听的端口
    示例:EXPOSE 80
    ENV
    指定环境变量,环境变量可以在后续RUN指令中使用
    格式: ENV <key> <value>
    示例: ENV JAVA_HOME /path/to/java
    ADD
    ADD指令用于复制文件,复制指定的<src> 路径下的内容到容器中的<dest>路径下,<src>可以为URL;如果为tar文件,会自动解压到<dest>路径下
    格式: ADD <src>... <dest>
    COPY
    复制本地主机的<src>路径下的内容到镜像中的<dest>路径下;COPY指令和ADD指令类似,COPY不支持URL和压缩包一般情况下推荐使用COPY,而不是ADD
    格式: COPY <src>... <dest>
    示例:COPY nginx.conf /etc/nginx/nginx.conf
    ENTRYPOINT
    指定镜像的默认入口
    ENTRYPOINTCMD指令的目的一样,都是指定Docker容器启动时执行的命令,可多次设置,但只有最后一个有效
    格式: ENTRYPOINT ["executable", "param1", "param2"]
    WORKDIR
    WORKDIR指令可以在创建容器时在容器内部指定一个工作目录
    例如: WORKDIR /data
     
    Dockerfile示例;
    FROM microsoft/dotnet:2.2-aspnetcore-runtime
    LABEL version = "1.0"
    RUN mkdir /data
    COPY ./ /data
    WORKDIR /data
    EXPOSE 80
    CMD [ "dotnet","Docker.dll" ]
  • 相关阅读:
    排序算法
    彩票随机6+1,开发实例
    synchronized关键字以及对象锁和类锁的区别
    shell基础
    easyui+Spring MVC+hibernate = 乐途
    easyui + jdbc 实现简单的数据库管理。
    js map
    struts2 using kindeditor upload pictures (including jmagic compressed images)
    easyui filebox 浏览图片
    easyui datagrid to excel
  • 原文地址:https://www.cnblogs.com/cxt618/p/10518091.html
Copyright © 2011-2022 走看看