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的参数使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/398646.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

挑战杯 基于LSTM的天气预测 - 时间序列预测

0 前言 🔥 优质竞赛项目系列,今天要分享的是 机器学习大数据分析项目 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/po…

【LeetCode】递归精选8题——基础递归、链表递归

目录 基础递归问题: 1. 斐波那契数(简单) 1.1 递归求解 1.2 迭代求解 2. 爬楼梯(简单) 2.1 递归求解 2.2 迭代求解 3. 汉诺塔问题(简单) 3.1 递归求解 4. Pow(x, n)(中等&…

【linux】查看openssl程序的安装情况

【linux】查看openssl程序的安装情况 1、查看安装包信息 $ rpm -qa |grep openssl 2、安装路径 $ rpm -ql openssl $ rpm -ql openssl-libs $ rpm -ql openssl-devel 3、相关文件和目录 /usr/bin/openssl /usr/include/openssl /usr/lib64/libssl.so.* /usr/lib64/libcrypto…

直接查看电脑几核芯几线程的方法

之前查看电脑几核芯几线程时都是点击 此电脑->属性->设备管理器->处理器 但是这样并不能判断是否有多线程 譬如这里,是2核芯2线程还是4核芯? 实际上,打开任务管理器后点击性能查看核芯线程数即可 所以示例这台电脑是4核芯而不是2…

视频生成模型:构建虚拟世界的模拟器 [译]

原文:Video generation models as world simulators 我们致力于在视频数据上开展生成模型的大规模训练。具体来说,我们针对不同时长、分辨率和宽高比的视频及图像,联合训练了基于文本条件的扩散模型。我们采用了一种 Transformer 架构&#…

多维时序 | Matlab实现BiLSTM-MATT双向长短期记忆神经网络融合多头注意力多变量时间序列预测模型

多维时序 | Matlab实现BiLSTM-MATT双向长短期记忆神经网络融合多头注意力多变量时间序列预测模型 目录 多维时序 | Matlab实现BiLSTM-MATT双向长短期记忆神经网络融合多头注意力多变量时间序列预测模型预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.多维时序 | Matlab…

回显服务器

. 写一个应用程序,让这个程序可以使用网络通信,这里就需要调用传输层提供的api,传输层提供协议,主要是两个: UDP,TCP,它们分别提供了一套不同的api,socket api. UDP和TCP UDP:无连接,不可靠传输,面向数据报,全双工 TCP:有连接,可靠传输,面向字节流,全双工 一个客户端可以连接…

仪表板展示|DataEase看中国:历年研究生报考数据分析

背景介绍 在信息时代的浪潮中,研究生教育作为培养高层次专业人才的重要通道,不断吸引着广大毕业生和在职人士的关注。今天我们结合2018年~2024年的研究生报考数据,以数字为镜,深入了解近年来研究生培养态势。 本文将…

Redis篇----第七篇

系列文章目录 文章目录 系列文章目录前言一、Redis 的回收策略(淘汰策略)?二、为什么 edis 需要把所有数据放到内存中?三、Redis 的同步机制了解么?四、Pipeline 有什么好处,为什么要用 pipeline?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍…

机器学习:逻辑回归原理

逻辑回归模型是一种广泛应用于分类问题的统计方法。尽管名为“回归”,但它实际上是一种分类算法,主要用于预测观察对象属于某个类别的概率。逻辑回归模型特别适用于二分类问题,但也可以通过一些策略扩展到多分类问题。 逻辑回归的应用与优化…

gazebo 中使用gmaping 建图

一、使用gmapping 建图 启动roscoreroslaunch wpr_simulation wpb_stage_robocup.launchsudo apt install ros-noetic-gmappingrosrun gmapping slam_gmapping启动rviz (rosrun rviz rviz)。添加RobotModel、LaserScan、Map后 显示如下: 6.rosrun wpr_simulation k…

网络爬虫基础(上)

1. 爬虫的基本原理 爬虫就是在网页上爬行的蜘蛛,每爬到一个节点就能够访问该网页的信息,所以又称为网络蜘蛛; 网络爬虫就是自动化从网页上获取信息、提取信息和保存信息的过程; 2. URL的组成部分 URL全称为Uniform Resource L…

UG NX二次开发(C#)-PMI-获取PMI尺寸数据

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、在UG NX的三维模型中添加PMI尺寸信息3、采用二次开发获取尺寸数据4、测试结果1、前言 PMI(Product and Manufacturing Information)是产品和制造信息的简称,主要用于将产品部件设计的…

python 与 neo4j 交互(py2neo 使用)

参考自:neo4j的python.py2neo操作入门 官方文档:The Py2neo Handbook — py2neo 2021.1 安装:pip install py2neo -i https://pypi.tuna.tsinghua.edu.cn/simple 1 节点 / 关系 / 属性 / 路径 节点(Node)和关系(relationship)是构成图的基础…

代码随想录算法训练营第二十三天 | 669. 修剪二叉搜索树,108.将有序数组转换为二叉搜索树,538.把二叉搜索树转换为累加树 [二叉树篇]

代码随想录算法训练营第二十三天 LeetCode 669. 修剪二叉搜索树题目描述思路递归参考代码 LeetCode 108.将有序数组转换为二叉搜索树题目描述思路参考代码 LeetCode 538.把二叉搜索树转换为累加树题目描述思路参考代码 LeetCode 669. 修剪二叉搜索树 题目链接:669. …

《Solidity 简易速速上手小册》第9章:DApp 开发与 Solidity 集成(2024 最新版)

文章目录 9.1 DApp 的架构和设计9.1.1 基础知识解析更深入的理解实际操作技巧 9.1.2 重点案例:去中心化社交媒体平台案例 Demo:创建去中心化社交媒体平台案例代码SocialMedia.sol - 智能合约前端界面 测试和验证拓展功能 9.1.3 拓展案例 1:去…

LabVIEW高速信号测量与存储

LabVIEW高速信号测量与存储 介绍了LabVIEW开发的高速信号测量与存储系统,解决实验研究中信号捕获的速度和准确性问题。通过高效的数据处理和存储解决方案,本系统为用户提供了一种快速、可靠的信号测量方法。 项目背景 在科学研究和工业应用中&#xf…

百度RT-DETR :基于视觉变换器的实时物体检测器

概述 实时检测转换器 (RT-DETR) 由百度开发,是一种尖端的端到端物体检测器,可在保持高精度的同时提供实时性能。它利用视觉转换器(ViT)的强大功能,通过解耦尺度内交互和跨尺度融合,高效处理多尺度特征。RT…

think-cell Round 1

think-cell Round 1 A. Maximise The Score 题意:给出2n个数,每次选两个取较小值加到分数里,分数最大为多少。 思路:排序,奇数位和。 AC code: void solve() {cin >> n;int ans 0;int a[N];for…

EXCEL使用VBA一键批量转换成PDF

EXCEL使用VBA一键批量转换成PDF 上图是给定转换路径 Sub 按钮1_Click() Dim a(1 To 1000) As String Dim a2 As String Dim myfile As String Dim wb As Workbook a2 Trim(Range("a2"))myfile Dir(a2 & "\" & "*.xls")k 0Do While m…