3、docker的数据卷和dockerfile

news2025/4/18 9:43:39

dockerfile--------------------自定义镜像

docker的数据卷:

容器与宿主机之间,或者容器和容器之间的数据共享(目录)。

创建容器的时间,通过指定目录,实现容器于宿主机之间,或者容器和容器之间的数据共享。

容器的生命周期是有限的,容器一旦销毁,内部的数据也会一并消失,所以我们创建了数据卷的方式,将容器内的数据持久化保存到宿主机。

如何实现内部和宿主机之间的挂载:

-v:volume,挂载卷,数据卷

-v /opt/test1:/opt/test1:ro
宿主机的目录 容器的目录      数据卷的默认权限是rw,ro:只读模式

已宿主机的目录为准。容器的生命周期是有限的,保存到宿主机的数据可以在下一次创建容器时继续使用。

ro:只读模式

数据卷容器:

容器和容器之间的共享数据:

-v指定目录,如果没有:这个目录就是容器内的数据目录,不会和宿主机挂载

--volumes-from: 另外一个容器,使用其他容器提供的数据目录。这个目录仅限于容器内数据共享,一旦容器销毁,内部的数据目录也会一并销毁。

创建容器的时候,一定要做宿主机和容器之间的端口映射(容器对外提供访问),一定要对容器做资源限制,一定要做数据卷

dockerfile:

自定义镜像*

基于dockerfile创建,

联合文件系统,UnionFs 是创建docker镜像的基础,镜像可以通过分层来进行集成,基于基础的镜像可以制作各种应用的镜像。

特点:一次性加载多个文件系统,但是创建好容器之后,对于用户来说只有一个文件系统。

docker镜像的定制化操作实际上就是定制每一层所要添加的配置和文件等等。

把所有的需要的操作写入一个脚本当中,然后一键运行,就是dockerfile

dockerfile作为一个脚本,由四部分组成:

1、基础镜像:程序的运行环境

2、维护者信息(可选项,相当于注释)可以不写

3、镜像的操作命令(自定义应用)

4、容器启动时的命令(容器没有可执行的命令,就会退出,stop状态,必须要给容器一个可执行的持久化的命令。)

dockerfile的命令格式:

FROM:指定程序的基础镜像

MAINTANER:维护者信息(可以忽略)LABEL

镜像的操作命令:

RUN:在基础镜像上运行命令,结果会提交到新镜像。每执行一次run就相当于是镜像的一层

run的命令越多,镜像的分层就越多,镜像越大。

ADD:将宿主机的文件复制到镜像的内部,可以URL和解压

COPY:仅限于复制,将宿主机的文件复制到镜像内部,只能是宿主机的本地文件,不支持下载。

ENV:指定镜像内的容器运行之后的环境变量

WORKDIR:容器的工作目录,也是进入容器之后的默认目录  /opt/test1

USER:指定容器运行时的用户名或者uid

VOLUME:创建容器内的挂载点,可以被外部使用,即可以和宿主机挂载,也可以和容器使用

EXPOSE:声明容器对外的网络端口
ARG:用来传递变量,把宿主机的参数传递到容器内部的参数

容器启动的命令:

CMD:指定容器运行时的默认命令

ENTRYPOINT:指定容器运行时的默认命令

cmd和entrypoint是有区别的*

1、cmd可以给entrypoint传参,entrypoint会覆盖cmd的命令

2、当创建容器时,外部定义了参数,如果是cmd,会被外部的传参覆盖,只会执行外部传参的命令,但是entrypoint的命令是不会被外部传参的命令覆盖的。

3、如果有多个cmd和entrypoint只会执行最后一个。

docker build -t centos:test1 . 
开启镜像的制作
-t:创建完成之后给镜像指定的名称和标签

.: 直接从当前目录的dockerfile文件创建镜像

cmd 传参,覆盖原本命令

entrypoint  传参,命令不会被覆盖

run命令在一个dockerfile当中不能太多,每执行一次run就相当于是镜像的一层

run的命令越多,镜像的分层就越多,镜像越大。

RUN apt -y insatll nginx
RUN apt -y install httpd

RUN apt -y install nginx && apt -y install httpd

&&: 在run命令中,表示连接多个命令,确保前一个命令执行成功,才会运行第二个命令。

;  :         apt -y insatll nginx ; apt -y install.httpd

不管前面的命令是否成功,都会执行后面的命令

||   :     或者(只有前面的失败了,后面的命令才会执行)

add和copy的区别

1、add和copy在复制文件时,表现的是一致的。复制本地文件。

找和dockerfile在一个目录下的文件。自动复制到指定路径。

自定义镜像

创建容器

2、解压和下载---------------------add

解压

下载

ADD的优点,没有格式的限制-------------->解压,   .gz   .bz2   直接跟上路径,自动解压到目标路径

add缺点:在不解压的前提下,无法复制tar的压缩文件。

只是复制,使用copy,如果是压缩再使用add。

如何看工作目录,环境变量和容器卷


定制化的创建一个nginx的基于源码包的镜像

nginx配置文件

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

登上Nature!交叉注意力机制 发顶会流量密码!

在深度学习领域,交叉注意力融合技术正迅速崛起,并成为处理多模态数据的关键工具。这一技术通过有效地整合来自不同模态的信息,使得模型能够更好地理解和推理复杂的数据关系。 随着多模态数据的日益普及,如图像、文本和声音等&…

网安——CSS

一、CSS基础概念 CSS有两个重要的概念,分为样式和布局 CSS的样式分为两种,一种是文字的样式,一种是盒模型的样式 CSS的另一个重要的特质就是辅助页面布局,完成HTML不能完成的功能,比如并排显示或精确定位显示 从HT…

SOME/IP协议详解 基础解读 涵盖SOME/IP协议解析 SOME/IP通讯机制 协议特点 错误处理机制

车载以太网协议栈总共可划分为五层,分别为物理层,数据链路层,网络层,传输层,应用层,其中今天所要介绍的内容SOME/IP就是一种应用层协议。 SOME/IP协议内容按照AUTOSAR中的描述,我们可以更进一步…

Mysql--实战篇--SQL优化(查询优化器,常用的SQL优化方法,执行计划EXPLAIN,Mysql性能调优,慢日志开启和分析等)

一、查询优化 1、查询优化器 (Query Optimizer) MySQL查询优化器(Query Optimizer)是MySQL数据库管理系统中的一个关键组件,负责分析和选择最有效的执行计划来执行SQL查询。查询优化器的目标是尽可能减少查询的执行时间和资源消耗&#xff…

CV项目详解:基于yolo8的车辆识别系统(含源码和具体教程)

使用YOLOv8(You Only Look Once)和OpenCV实现车道线和车辆检测,目标是创建一个可以检测道路上的车道并识别车辆的系统,并估计它们与摄像头的距离。该项目结合了计算机视觉技术和深度学习物体检测。 使用YOLOv8和OpenCV实现车道线…

osg中实现模型的大小、颜色、透明度的动态变化

以博饼状模型为对象,实现了模型大小、颜色、透明度的动态变化。 需要注意的是一点: // 创建材质对象osg::ref_ptr<osg::Material> material = new osg::Material;material->setDiffuse(osg::Material::FRONT_AND_BACK, osg::Vec4(0.0, 1.0, 0.0, 0.5));// 获取模型的…

小米vela系统(基于开源nuttx内核)——openvela开源项目

前言 在 2024 年 12 月 27 日的小米「人车家全生态」合作伙伴大会上&#xff0c;小米宣布全面开源 Vela 操作系统。同时&#xff0c;OpenVela 项目正式上线 GitHub 和 Gitee&#xff0c;采用的是比较宽松的 Apache 2.0 协议&#xff0c;这意味着全球的开发者都可以参与到 Vela…

《数据思维》之数据可视化_读书笔记

文章目录 系列文章目录前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 数据之道&#xff0c;路漫漫其修远兮&#xff0c;吾将上下而求索。 一、数据可视化 最基础的数据可视化方法就是统计图。一个好的统计图应该满足四个标准&#xff1a;准确、有…

AI刷题-最大矩形面积问题、小M的数组变换

目录 一、最大矩形面积问题 问题描述 输入格式 输出格式 输入样例 输出样例 数据范围 解题思路&#xff1a; 问题理解 数据结构选择 算法步骤 最终代码&#xff1a; 运行结果&#xff1a; 二、小M的数组变换 问题描述 测试样例 解题思路&#xff1a; 问题…

数据库(MySQL)练习

数据库&#xff08;MySQL&#xff09;练习 一、练习1.15练习练习 二、注意事项2.1 第四天 一、练习 1.15练习 win11安装配置MySQL超详细教程: https://baijiahao.baidu.com/s?id1786910666566008458&wfrspider&forpc 准备工作&#xff1a; mysql -uroot -p #以管理…

C语言:-三子棋游戏代码:分支-循环-数组-函数集合

思路分析&#xff1a; 1、写菜单 2、菜单之后进入游戏的操作 3、写函数 实现游戏 3.1、初始化棋盘函数&#xff0c;使数组元素都为空格 3.2、打印棋盘 棋盘的大概样子 3.3、玩家出棋 3.3.1、限制玩家要下的坐标位置 3.3.2、判断玩家要下的位置是否由棋子 3.4、电脑出棋 3.4.1、…

知识图谱常见的主流图数据库

在知识图谱中&#xff0c;主流使用的图数据库包括以下几种&#xff1a; Neo4j&#xff1a;这是目前全球部署最广泛的图数据库之一&#xff0c;具有强大的查询性能和灵活的数据模型&#xff0c;适用于复杂关系数据的存储和查询。 JanusGraph&#xff1a;JanusGraph是一个开源的…

Nginx三种不同类型的虚拟主机(基于域名、IP 和端口)

&#x1f3e1;作者主页&#xff1a;点击&#xff01; Nginx-从零开始的服务器之旅专栏&#xff1a;点击&#xff01; &#x1f427;Linux高级管理防护和群集专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2025年1月15日13点14分 目录 1. 基于域名的虚拟主机 …

RabbitMQ(四)

SpringBoot整合RabbitMQ SpringBoot整合1、生产者工程①创建module②配置POM③YAML④主启动类⑤测试程序 2、消费者工程①创建module②配置POM③YAML文件内配置&#xff1a; ④主启动类⑤监听器 3、RabbitListener注解属性对比①bindings属性②queues属性 SpringBoot整合 1、生…

java_将数据存入elasticsearch进行高效搜索

使用技术简介&#xff1a; (1) 使用Nginx实现反向代理&#xff0c;使前端可以调用多个微服务 (2) 使用nacos将多个服务管理关联起来 (3) 将数据存入elasticsearch进行高效搜索 (4) 使用消息队列rabbitmq进行消息的传递 (5) 使用 openfeign 进行多个服务之间的api调用 参…

win32汇编环境,对话框程序中组合框的应用举例

;运行效果 ;win32汇编环境,对话框程序中组合框的应用举例 ;比如在对话框中生成组合框&#xff0c;增加子项&#xff0c;删除某项&#xff0c;取得指定项内容等 ;直接抄进RadAsm可编译运行。重点部分加备注。 ;以下是ASM文件 ;>>>>>>>>>>>>…

occ的开发框架

occ的开发框架 1.Introduction This manual explains how to use the Open CASCADE Application Framework (OCAF). It provides basic documentation on using OCAF. 2.Purpose of OCAF OCAF (the Open CASCADE Application Framework) is an easy-to-use platform for ra…

Linux检查磁盘占用情况

1.检查使用情况 df -h发现是/dev/vda1占用很高 2.查看/dev/vda1文件夹 cd /dev/vda1发现不是文件夹 3.继续查看使用情况 df -h *4.原因可能是文件已经删除但是进程还在&#xff0c;没有释放空间 5.查看删除操作的进程 lsof -n | grep deleted6.杀死进程 kill -9 PID

C# (图文教学)在C#的编译工具Visual Studio中使用SQLServer并对数据库中的表进行简单的增删改查--14

目录 一.安装SQLServer 二.在SQLServer中创建一个数据库 1.打开SQL Server Manager Studio(SSMS)连接服务器 2.创建新的数据库 3.创建表 三.Visual Studio 配置 1.创建一个简单的VS项目(本文创建为一个简单的控制台项目) 2.添加数据库连接 四.简单连通代码示例 简单连…

Flutter插件制作、本地/远程依赖及缓存机制深入剖析(原创-附源码)

Flutter插件在开发Flutter项目的过程中扮演着重要的角色&#xff0c;我们从 ​​​​​​https://pub.dev 上下载添加到项目中的第三方库都是以包或者插件的形式引入到代码中的&#xff0c;这些第三方工具极大的提高了开发效率。 深入的了解插件的制作、发布、工作原理和缓存机…