当前位置: 首页 > news >正文

docker (八)-dockerfile制作镜像

一 dockerfile

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

FROM ubuntu:18.04
WORKDIR /app
COPY . .
RUN make .
CMD python app.py
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的参数使用。

http://www.lryc.cn/news/303544.html

相关文章:

  • springcloud-网关(gateway)
  • 2.20 day2 QT
  • 【C++语法基础】4.分支和循环结构(✨新手推荐阅读)
  • 朋友圈程序全开源版源码,附带系统搭建教程
  • 思维方式系列文章目录 -《清单革命》实践
  • RAID 创建使用以及ubuntu安装和使用zfs文件系统及Ubuntu软件安装
  • yarn常用命令小记
  • 防御保护---内容保护
  • jquery将网页html文档导出为pdf图片
  • opengl 学习着色器
  • 【数据结构】18 二叉搜索树(查找,插入,删除)
  • 力扣日记2.20-【回溯算法篇】491. 非递减子序列
  • Android 13.0 SystemUI下拉状态栏定制二 锁屏页面横竖屏解锁图标置顶显示功能实现
  • FPGA_简单工程_拨码开关
  • LaunchPad 市场的复苏,Penpad 成新兴生力军
  • 知识图谱实战应用30-基于py2neo的天文学中的恒星、行星与卫星之间的关系知识图谱研究与应用
  • 笔试题详解(C语言进阶)
  • ClickHouse快速上手
  • 蓝桥杯DP算法——背包问题(C++)
  • 【LeetCode+JavaGuide打卡】Day22|235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点
  • Stable Diffusion WebUI 界面介绍
  • Cocos2dx-lua ScrollView[一]基础篇
  • QT应用软件【协议篇】周立功CAN接口卡代码示例
  • JVM对象的创建流程与内存分配
  • docker (六)-进阶篇-数据持久化最佳实践MySQL部署
  • 力扣题目训练(17)
  • 【react】react中和vue中的provide/inject、context写法示例
  • MySQL 的存储引擎(基本介绍)
  • Unity3D 实现基于物理引擎的绳子关节解析详解
  • C语言二级易忘易错易混知识点(自用)