docker的数据卷与dockerfile自定义镜像

docker的数据卷与dockerfile自定义镜像

  • 一. docker的数据卷
    • 数据卷容器
  • 二. dockerfile自定义镜像
    • 2.1 dockerfile的命令格式
      • 镜像的操作命令
        • add和copy的区别
      • 容器启动的命令
    • 2.2 run命令
    • 2.3 其它端口映射
  • 三. 练习

一. docker的数据卷

  • 容器于宿主机之间,或者容器和容器之间的数据共享(目录)。
  • 创建容器的时候,通过指定目录,实现容器于宿主机之间,或者容器和容器之间的数据共享。
  • 容器的生命周期是有限的,容器一旦销毁,内部的数据也会一并消失,所以我们创建了数据卷的方式,将容器内的数据持久化保存到宿主机。

-v /usr/share/nginx/html:/opt/test1:ro
-v 宿主机的目录:容器内的目录:数据卷的默认权限是rw,ro:只读模式
volume:挂载卷,数据卷
以宿主机的目录为准,容器的生命周期是有限的,保存到宿主机的数据可以再下一次创建容器的时候继续使用。
docker run -itd --name nginx1 -v /opt/test1:/usr/share/nginx/html -p 80:80 nginx:1.22

docker exec -it nginx1 bash

数据卷容器

容器和容器之间共享数据
docker run -itd --name test2 -v /opt/data1 -v /opt/data2 centos:7
-v指定目录,如果没有:这个目录就是容器内的数据目录,不会和宿主机挂载

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

docker exec it test2 bash

cd /opt
ls

创建容器,指定挂载卷容器内的nginx的日志目录和宿主机挂载,nginx的映射端口为随机端口。然后访问容器,可以在宿主机显示日志的内容。
var/log/nginx

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

二. dockerfile自定义镜像

  • 基于dockerfile创建
  • 联台文件系统,UnionFs是创建docker镜像的基础,镜像可以通过分层来进行集成
  • 基于基础的镜像可以制作各种应用的镜像
    特点:一次性加载多个文件系统,但是创建好容器之后,对于用来说只有一个文件系统。
    在这里插入图片描述

docker镜像的定制化操作实际上就是定制每一层所要添加的配置和未见等等。
把所有的需要的操作写入一个脚本当中,然后一键运行,就是dockerfile
dockerfile作为一个脚本,由四部分组成:

  1. 基础镜像: 程序的运行环境
  2. 维护者信息(可选项,相当于注释)可以不写
  3. 镜像的操作命令(自定义应用)
  4. 容器启动时的命令(容器没有可执行的命令,就会退出进入stop状态,必须要给容器一个可执行的持久化的命令。)

2.1 dockerfile的命令格式

  • FROM:指定程序的基础镜像

  • MAINTAINER:维护者信息(可以忽略)或者LABEL

镜像的操作命令

  • RUN:在基础镜像运行命令,结果提交到新镜像。每执行一次run就相当于是镜像的一层,run的命令太多,镜像的分层就越多,镜像越大。
  • ADD:将宿主机的文件复制到镜像的内部,可以URL和解压
  • COPY:将宿主机的文件复制到镜像的内部,只能是宿主机的本地文件,不支持下载。
  • ENV:指定镜像内的容器运行之后的环境变量
  • WORKDIR:容器的工作目录,也是进入容器之后的默认目录
  • USER:指定容器运行时的用户名或者uid
  • VOLUME:创建容器内的挂载点,可以被外部使用,即可以和宿主机挂载,也可以和容器使用
  • EXPOSE:声明容器对外的网络端口
  • ARG:用来传递变量,把宿主机的参数传递到容器内部的参数
add和copy的区别
  1. add和copy在复制文件时,表现的是一致的。复制本地文件,找和dockerdfile在一个目录下的文件。自动复制到指定路径。
  2. 解压和下载只能是add
  • ADD的优点
    没有格式的限制----->解压,.gz .bz2 直接跟上路径,自动解压到目标路
  • add缺点
    在不解压的前提下,无法复制tar的压缩文件。
    只是复制,使用copy,如果是压缩再使用 add。

容器启动的命令

  • CMD:指定容器运行时的默认命令
  • ENTRYPOINT:指定容器运行时的默认命令
    cmd和entrtponint是有区别的
    cmd可以给entrypoint传参,entrypoint会覆盖cmd的命令,外部定义了参数,如果是cmd,会被外部的传参覆盖,只会执行外部传参的命令,但是entrypoint的命令是不会被外部传参的命令覆盖的。
    如果有多个cmd和entrypoint只会执行最后一个。
#制作镜像
docker build -t centos:test1 .
docker build:开启镜像的制作
-t:创建完成之后给镜像指定的名称和标签
.:直接从当前目录的dockerfile文件创建镜像

2.2 run命令

RUN apt -yinsatll nginx && apt -y install httpd
RUN apt -yinsatll nginx ; apt -y install httpd
RUN apt -yinsatll nginx || apt -y install httpd
  • &&:在run命令中,表示连接多个命令,确保前一个命令执行成功,才会运行第二个命令。
  • ;:不管前面的命令是否成功,都会执行后面的命令
  • ||:或者(只有前面的失败了,后面的命令才会执行)
FROM ubuntu:22.04
RUN apt-get update && apt -y install nginx
EXPOSE 82
ENTRYPOINT ["nginx","-g",daemon off;"]

2.3 其它端口映射

vim /etc/nginx/nginx.conf
#http中添加
server {listen 82;location /{root html;index index.html index.html;}}vim Dockerfile
FROM ubuntu:22.04
RUN apt-get update \&& apt -y install nginx \&& apt -y install net-tools vim
EXPOSE 82
ADD nginx.conf /etc/nginx
ENTRYPOINT ["nginx","-g","daemon off;"]docker build -t nginx:test1 .docker run -itd --name nginx2 -P nginx:test1
FROM ubuntu:22.04
WORKDIR /opt
ENV PATH /opt/test1:$PATH
VOLUME ["/opt/test1"]
#这个不代表容器的默认挂载路径,也不表示宿主机一定要和这个目录挂载

三. 练习

用ubuntu实现nginx:1.22的编译版本,暴露端口为84,设置nginx的默认访问目录为/var/www/html/index.html,配置都要通过dockerfile自动完成。
宿主机和访问目录实现挂载
限制cpu只能使用10%,
以及1g的内存
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
docker run -itd --name ubuntu1 -v /opt/ubutu:/usr/local/nginx/html/ -P --cpu-quota 20000 -m 1g nginx:1
在这里插入图片描述

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

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

相关文章

【大数据】机器学习 -----关于data.csv数据集分析案例

打开表 import pandas as pd df2 pd.read_csv("data.csv",encoding"gbk") df2.head()查看数据属性(列标题,表形状,类型,行标题,值) print("列标题:",df2.columns)Data…

开发规范

开发规范 企业项目开发有2种开发模式:前后台混合开发和前后台分离开发。 前后台混合开发 顾名思义就是前台后台代码混在一起开发,如下图所示: 这种开发模式有如下缺点: 沟通成本高:后台人员发现前端有问题&#xf…

【Mysql进阶知识】从.SQL文件中执行SQL语句

目录 方法一:使用source命令导入 方法二:使用mysql客户端导入 方法一:使用source命令导入 有时候我们需要从 SQL 文件执行一些 SQL 语句,比如要把一个数据库从一台服务器 A 复制到另一台服务器 B 上,那么可以先从服务…

springMVC---resultful风格

目录 一、创建项目 pom.xml 二、配置文件 1.web.xml 2.spring-mvc.xml 三、图解 四、controller 一、创建项目 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi…

RustDesk ID更新脚本

RustDesk ID更新脚本 此PowerShell脚本自动更新RustDesk ID和密码&#xff0c;并将信息安全地存储在Bitwarden中。 特点 使用以下选项更新RustDesk ID&#xff1a; 使用系统主机名生成一个随机的9位数输入自定义值 为RustDesk生成新的随机密码将RustDesk ID和密码安全地存储…

告别 Excel,拥抱 R 语言:开启数据分析新时代

在这个数据驱动的时代&#xff0c;数据分析已然成为每个行业的核心竞争力。从市场营销到金融领域&#xff0c;从医疗健康到教育行业&#xff0c;数据无处不在&#xff0c;深刻影响着每一个决策。然而&#xff0c;面对日益复杂的数据集&#xff0c;单纯依靠 Excel 进行分析&…

LabVIEW驱动电机实现样品自动搜索

利用LabVIEW控制电机驱动相机在XY平面上进行扫描&#xff0c;以检测样品位置。样品最初可能位于相机视野范围之外&#xff0c;需要实现自动搜索样品位置并完成精确定位扫描的功能。该系统需具有以下特点&#xff1a; 高效搜索&#xff1a;能够快速确定样品位置&#xff0c;缩短…

【C语言】_字符串拷贝函数strcpy

目录 1. 函数声明及功能 2. 使用示例 3. 注意事项 4. 模拟实现 4.1 第一版&#xff1a;基本功能判空const修饰 4.2 第二版&#xff1a;优化对于\0的单独拷贝 4.3 第三版&#xff1a;仿strcpy的char*返回值 1. 函数声明及功能 char * strcpy ( char * destination, cons…

大模型WebUI:Gradio全解11——Chatbots:融合大模型的多模态聊天机器人(3)

大模型WebUI&#xff1a;Gradio全解11——Chatbot&#xff1a;融合大模型的多模态聊天机器人&#xff08;3&#xff09; 前言本篇摘要11. Chatbot&#xff1a;融合大模型的多模态聊天机器人11.3 组件Chatbot及ChatMessage11.3.1 Chatbot&#xff1a;聊天机器人组件1. API参数2.…

细说STM32F407单片机窗口看门狗WWDG的原理及使用方法

目录 一、窗口看门狗的工作原理 1、递减计数器 2、窗口值和比较器 3、看门狗的启动 4、提前唤醒中断 二、窗口看门狗的HAL驱动程序 1、窗口看门狗初始化 2.窗口看门狗刷新 3.EWI中断及其处理 三、不开启EWI的WWDG示例 1、示例功能 2、项目设置 &#xff08;1&…

Docker部署Spring Boot + Vue项目

目录 前提条件 概述 下载代码 打开代码 Docker创建网络 MySQL容器准备 MySQL数据库配置 启动MySQL容器 测试连接MySQL 初始化MySQL数据 Redis容器准备 修改Redis配置 启动redis容器 部署后端 后端代码打包 上传jar包到Linux 创建Dockerfile 构建镜像 运行后…

基于Oracle与PyQt6的电子病历多模态大模型图形化查询系统编程构建

一、引言 1.1 研究背景阐述 在当今数字化时代,医疗行业正经历着深刻的变革,数字化转型的需求日益迫切。电子病历(EMR)作为医疗信息化的核心,其管理的高效性和数据利用的深度对于提升医疗服务质量、优化临床决策以及推动医学研究具有至关重要的意义。传统的电子病历管理系…

万字长文介绍ARINC 653,以及在综合模块化航空电子设备(IMA)中的作用

文章目录 一、引言二、ARINC 653背景三、整体系统架构四、应用/执行&#xff08;APEX&#xff09;接口五、ARINC 653 RTOS内部机制六、健康监测功能七、软件应用八、ARINC 653现状九、总结 一、引言 在现代航空领域&#xff0c;综合模块化航空电子设备&#xff08;IMA&#xf…

在eNSp上telnet一下吧

在上篇博客&#xff1a;DNS 我们提到了telnet和设备带外管理、带内管理&#xff0c;它确实是非常有趣的一个知识点哦&#xff0c;接下来我们一起来学习学习吧~ Telnet&#xff08;远程登陆协议&#xff09; Telnet基于TCP 23号端口&#xff0c;典型的C/S架构模式&#xff0c;是…

音频语言模型与多模态体系结构

音频语言模型与多模态体系结构 多模态模型正在创造语言、视觉和语音等以前独立的研究领域的协同效应。这些模型使用通用架构,将每种模式视为不同的“token”,使它们能够以一种与人类认知非常相似的方式联合建模和理解世界。 ​ ​可以将多模态分为两个主要领域:输入空间(…

【深度学习】关键技术-正则化(Regularization)

正则化&#xff08;Regularization&#xff09; 是一种用于防止模型过拟合的技术。它通过在损失函数中添加额外的约束项&#xff0c;限制模型的复杂度&#xff0c;从而提高模型的泛化能力。 正则化的主要作用 防止过拟合&#xff1a;通过抑制模型对训练数据的过度拟合&#xf…

怎么在iPhone手机上使用便签进行记录?

宝子们&#xff0c;在这个快节奏的时代&#xff0c;灵感的火花总是一闪而过&#xff0c;待办事项也常常让人应接不暇。好在咱们的 iPhone手机便签超给力&#xff0c;能满足各种记录需求&#xff01;今天就来给大家分享一下&#xff0c;如何在 iPhone 手机上巧用便签&#xff0c…

渗透测试之越权漏洞详解 水平越权 垂直越权 目录越权 SQL跨库查询越权 以及未授权漏洞 一篇文章说明白

目录 什么是越权 越权漏洞形成的原因是&#xff1a; 越权常见分类 漏洞产生条件 越权细分类 水平越权&#xff1a; 水平越权解释&#xff1a; 垂直越权&#xff1a; 垂直越权示例: 解释: 修复建议 例如 越权漏洞易发生的点 1.基础参数 2.多阶段验证 3.基于参数的访…

ANSYS Fluent学习笔记(七)求解器四部分

16.亚松弛因子 Controls面板里面设置&#xff0c;它能够稳定计算的过程。如果采用常规的迭代算法可能结果就会发生振荡的情况。采用亚松驰因子可以有助于残差的稳定。 他的取值范围是0-1&#xff0c;0代表没有亚松驰&#xff0c;1表示物理量变化很快&#xff0c;一般情况下取…

ComfyUI安装

项目地址&#xff1a;https://github.xyz/comfyanonymous/ComfyUI 下载地址(我下载时的最新版时v0.3.10)&#xff1a;https://github.xyz/comfyanonymous/ComfyUI/releases/tag/v0.3.10 加速下载地址&#xff1a;https://bgithub.xyz/comfyanonymous/ComfyUI/releases/tag/v0…