• 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后面的命令。

  • 相关阅读:
    SuperMap房产测绘成果管理平台
    SuperMap产权登记管理平台
    Android adb shell am 的用法(1)
    由浅入深谈Perl中的排序
    Android 内存监测和分析工具
    Android 网络通信
    adb server is out of date. killing...
    引导页使用ViewPager遇到OutofMemoryError的解决方案
    adb logcat 详解
    How to send mail by java mail in Android uiautomator testing?
  • 原文地址:https://www.cnblogs.com/1016391912pm/p/14602809.html
Copyright © 2020-2023  润新知