zoukankan      html  css  js  c++  java
  • dockerfile简单使用

    Dockerfile是一个文本格式的配置文件,可以使用在命令行中调用任何命令。用户可以使用Dockerfile快速创建自定义的镜像

    docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的

    a.使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1。
    docker build -t runoob/ubuntu:v1  .

    Dockerfile 文件在/tmp目录下,生成的镜像名为 my/first_image
    docker build  -t  my/first_image  /tmp


    b.使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像。
    docker build github.com/creack/docker-firefox


    c.也可以通过 -f Dockerfile 文件的位置
      docker build -f /path/to/a/Dockerfile

    基本命令:
    1.支持使用# 注释

    2.第一行必须制定基于的基础镜像
    FROM  镜像名

    如果在同一个Dockerfile中创建多个镜像,可以使用多个FROM(每个镜像一次)

    FROM microsoft/aspnetcore:2.0

    维护者信息(可不写)
    MAINTAINER: 维护者信息
    示例:
        MAINTAINER Jasper Xu
        MAINTAINER sorex@163.com
        MAINTAINER Jasper Xu <sorex@163.com>


    3.RUN:构建镜像时执行的命令.其有以下两种命令执行方式:

    shell执行
    格式:
        RUN <command>
    如/bin/sh  -C

    exec执行
    格式:
        RUN ["executable", "param1", "param2"]
    示例:
        RUN apk update
        RUN  ["/bin/sh ", "-C", "echo hello"]
    每条指令将在当前镜像基础上执行指令命令,并提交为新的镜像。当命令较长时候可以使用来换行


    注:
      RUN指令创建的中间镜像会被缓存,并会在下次构建中使用。如果不想使用这些缓存镜像,可以在构建时指定--no-cache参

    数,如:docker build --no-cache


    4.ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget

    ADD  <src>  <dest>
    该命令将复制指定的<src>到容器的<dest>
    其中<src>可以是Dockerfile所在目录的一个相对路径,也可以是一个URL,还可以是一个tar文件。

    ADD  ./bonree_agent/  /bonree_agent


    5.COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
    COPY  <src>  <dest>
    复制本地主机的 <src>(为Dockerfile所在目录的相对路径,文件或者目录)为容器的<dest>。当目标路径不存在时会自动
    创建。
    如:ADD  ./bonree_agent/  /bonree_agent
    当使用本地目录为源目录时,推荐COPY。



    6.CMD:构建容器后调用,也就是在容器启动时才进行调用。

       支持三种格式:
    CMD ["excutable","param1","param2"]使用exec执行,推荐方式。
    CMD command  param1  param2   在/bin/sh中执行,提供给需要交互的应用。
    CMD ["param1","param2"]提供给ENTRYPOINT的默认参数

    指定启动容器时每个Dockerfile只能有一条CMD命令,如果指定了多条,只有最后一条生效。


    7.ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数。
    有两种格式:
    ENTRYPOINT  ["executable","param1","param2"]
    ENTRYPOINT  command  param1  param2 (shell中执行)

    配置容器启动后执行的命令,并且不可被docker run提供的参数覆盖。

    每个Dockerfile只能有一条ENTRYPOINT命令,如果指定了多条,只有最后一条生效。



    8.ENV:设置环境变量
    ENV  <key> <value>指定一个环境变量,会被RUN指令使用,并在容器运行时保持。
    例如:
    ENV  CORECLR_ENABLE_PROFILING  1

    9.EXPOSE:指定于外界交互的端口

      EXPOSE <port>  [<port>....]
     EXPOSE 22 80 8443
    告诉docker服务端容器暴露的端口号,供互联网系统使用。在启动容器的时候需要通过-P,docker主机会自动分配
    一个端口转发到指定端口。使用-p,则可以具备指定哪个本地端口映射过来。

    10、VOLUME:用于指定持久化目录  一般用来存放数据库或者需要保持的数据等
    格式:VOLUME  ["/data"]
         VOLUME ["/var/www", "/var/log/apache2", "/etc/apache2"
    注:
      一个卷可以存在于一个或多个容器的指定目录,该目录可以绕过联合文件系统,并具有以下功能:

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

    11.WORKDIR:工作目录,类似于cd命令
    格式:WORKDIR /path/workdir
    为后续的RUN  CMD  ENTRYPOINT指令配置工作目录
    可以使用多个WORKDIR指令。后续的命令如果是相对路径,则会基于之前的命令指定的路径
    WORKDIR  /a
    WORKDIR  b
    最终路径为/a/b


    12.USER:指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。使用USER指定用户时,可以使用用户名、UID或GID

    ,或是两者的组合。当服务不需要管理员权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户

    USER  daemon

    例如:RUN groupadd -r postgres && useradd -r  -g  postgres
    要临时获取管理员权限可以使用gosu  不推荐sudo



    13.ONBUILD:用于设置镜像触发器
    ONBUILD [INSTRUCTION]
    当该镜像别其他镜像当做基础镜像时触发此命令。

     ONBUILD ADD . /app/src
     ONBUILD RUN /usr/local/bin/python-build --dir /app/src
    相当于在后面添加了两条指令。

    具体一个demo:




  • 相关阅读:
    设置nginx中文件上传的大小限制度
    百度编辑器(ueditor)踩坑,图片转存无法使用
    帝国cms更换Ueditor编辑器上传图片加水印
    帝国cms7.5整合百度编辑器ueditor教程
    帝国CMS万能标签ecmsinfo介绍
    帝国CMS排行榜调用标签
    通过案例理解position:relative和position:absolute
    帝国CMS万能标签标题截取后自动加入省略号
    linux 安装字体
    Ecms7.5版CK编辑器保留word格式如何修改
  • 原文地址:https://www.cnblogs.com/mayyan/p/11805986.html
Copyright © 2011-2022 走看看