zoukankan      html  css  js  c++  java
  • Dockerfile

    什么是 Dockerfile?

    Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

    先看一个例子

    登录hub.docker.com,搜索centos,找到centos7.9

    具体网址:https://github.com/CentOS/sig-cloud-instance-images/blob/b2d195220e1c5b181427c3172829c23ab9cd27eb/docker/Dockerfile

    FROM scratch
    ADD centos-7-x86_64-docker.tar.xz /

    LABEL
        org.label-schema.schema-version="1.0"
        org.label-schema.name="CentOS Base Image"
        org.label-schema.vendor="CentOS"
        org.label-schema.license="GPLv2"
        org.label-schema.build-date="20201113"
        org.opencontainers.image.title="CentOS Base Image"
        org.opencontainers.image.vendor="CentOS"
        org.opencontainers.image.licenses="GPL-2.0-only"
        org.opencontainers.image.created="2020-11-13 00:00:00+00:00"

    CMD ["/bin/bash"]

    上面红色大写字母就是dockerfile的指令,后面跟随相对应的参数,当docker根据dockerfile构建镜像的时候,会逐行执行这些指令,每条指令都会创建一个新的镜像层,最后生成我们想要的镜像。

    注:scratch是初始镜像,可理解为c#中的基类。

    构建命令

    docker build -f ./dockerfile -t myImageName .

    -f dockerfile文件的路径,如果是在当前目录下,可省略

    -t 要生成的镜像的名字,可跟 :版本号,自定义镜像版本

    . 上下文路径,在构建镜像时可能要用到本机文件,会将路径下的所有内容打包。如果未说明最后一个参数,那么默认上下文路径就是 Dockerfile 所在的位置。上下文路径下不要放无用的文件,因为会一起打包发送给 docker 引擎,如果文件过多会造成过程缓慢。

    Dockerfile常用指令

    FROM

    定制的镜像都是基于 FROM 的镜像,例如 FROM centos,若本地没有这个镜像会自动下载该镜像到本地。

    RUN

    在docker build时执行的命令,有两种格式:

    ①shell格式,等同在shell终端操作的命令

    RUN yum install vim -y

    ②exec格式

    RUN ["yum","install","vim","-y"]

    MAINTAINER

    镜像维护者的姓名和邮箱地址

    EXPOSE

    当前容器对外暴露的端口号

    WORKDIR

    进入容器后所在的目录位置,如 WORKDIR /usr/local

    ENV

    在构建镜像过程中设置环境变量,

    格式ENV <key> <value>或ENV <key1>=<value> <key2>=<value>   如 ENV version 1.0

    使用就是 $version

    COPY

    从上下文目录中复制文件或者目录到容器指定路径

    COPY [--chown=<user>:<group>] <源路径1>...  <目标路径>

    [--chown=<user>:<group>]:可选参数,用户改变复制到容器内文件的拥有者和属组。

    COPY hom* /mydir  代表将上下文目录下的hom*文件复制到容器中的/mydir目录下

    ADD

    与COPY类似,但会自动解压tar文件以及处理URL

    VOLUME

    容器数据卷,格式 VOLUME ["路径1","路径2","路径3"]

    CMD

    在docker run时运行的命令,并且仅最后一个生效,格式:

    CMD <shell 命令>

    CMD ["可自行的命令或文件","参数1","参数2"...]

    ENTRYPOINT

    与CMD类似,但可以追加参数,两种方式:

    ENTRYPOINT yum install vim

    ①在运行容器时后面添加命令参数

    docker run -it mycentos -y

    ②在dockerfile中追加参数

    ENTRYPOINT yum install vim #定参

    CMD ["-y"] #变参

    ONBUILD

    延迟构建的命令,即在本次构建的镜像过程中不会执行,当有其他dockerfile继承自该镜像时,会触发ONBUILD后面的命令。

  • 相关阅读:
    【转】java内存溢出的场景及解决办法
    系统架构
    【转】Linux tar命令详解
    【转】Java 开发必会的 Linux 命令
    【转】ps命令详解与使用
    【转】Linux命令:ps -ef |grep java
    linux grep命令详解
    【springcloud】Zuul 超时、重试、并发参数设置
    【springcloud】常见面试题总结
    php的函数应用
  • 原文地址:https://www.cnblogs.com/1016391912pm/p/14602809.html
Copyright © 2011-2022 走看看