• docker (八)-dockerfile制作镜像


    一 dockerfile

    dockerfile通常包含以下几个常用命令:

    1. FROM ubuntu:18.04
    2. WORKDIR /app
    3. COPY . .
    4. RUN make .
    5. CMD python app.py
    6. EXPOSE 80

    FROM  打包使用的基础镜像
    WORKDIR  相当于cd命令,进入工作目录
    COPY  将宿主机的文件复制到容器内
    RUN  打包时执行的命令,相当于打包过程中在容器中执行shell脚本,通常用来安装应用程序所需要的依赖、设置权限、初始化配置文件等
    CMD  运行镜像时执行的命令
    EXPOSE  指定容器在运行时监听的网络端口,它并不会公开端口,仅起到声明的作用,公开端口需要容器运行时使用-p参数指定。 

    二 制作自己的镜像

    参考我们之前的配置,制作dockerfile文件

    编写dockerfile文件

    docker build . 打包

    docker images 查看镜像id

    三 image镜像与layer层

    image文件由一系列层构建而成,dockerfile每一个命令都会生成一个层。每一层都是只读的。
    例如前面我们制作镜像,就产生了4个层。

    也可以使用 docker image history ruoyi-java:4.7.4 命令查看

    创建容器时,会创建一个新的可写层,通常称为“容器层”。对正在运行的容器所做的所有更改(如写入新文件、修改现有文件和删除文件)都将写入容器层,而不会修改镜像。

    四 多阶段构建 

    在构建基于 Java 的应用程序时,需要一个 JDK 将源代码编译为 Java 字节码。但是,在生产中不需要该 JDK。

    多阶段构建可以将生成时依赖与运行时依赖分开,减小整个image文件大小。

    ENTRYPOINT 和 CMD 的区别

    dockerfile  应该至少包含一个ENTRYPOINT或CMD
    ENTRYPOINT  指定容器启动时执行的默认程序,一般运行容器时不会被替换或覆盖。
                             除非使用--entrypoint进行指定。

    docker run -it --entrypoint /bin/bash redis 

    例如docker run -it --rm mysql:5.7 /bin/bash
    如果镜像中ENTRYPOINT和CMD都存在,则CMD将作为ENTRYPOINT的参数使用。

  • 相关阅读:
    CockroachDB-备份与恢复(5)BACKUP命令
    【P60】JMeter Jtl 文件的 html 格式输出
    Log4cpp 使用DailyRollingFileAppender 设置按天进行日志轮转
    外包干了五年,废了...
    任务调度线程池-应用定时任务
    res_company_white_url.py 详解
    教你自己制作一个ALU
    R语言使用lubridate包处理日期和时间数据实战
    数据统计与可视化复习总结(二):非参数检验、生存分析
    【Python基础入门7】程序的组织结构、range函数及pass语句
  • 原文地址:https://blog.csdn.net/l6xy6/article/details/136135536