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

news2025/1/19 11:43:13

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.coloradmin.cn/o/2278900.html

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

相关文章

【python_钉钉群发图片】

需求: **在钉钉群发图片,需要以图片的形式展示,如图所示:**但是目前影刀里面没有符合条件的指令 解决方法: 1、在钉钉开发者后台新建一个自建应用,发版,然后获取里面的appkey和appsecret&am…

新星杯-ESP32智能硬件开发--ESP32的I/O组成-系统中断矩阵

本博文内容导读📕🎉🔥 ESP32开发板的中断矩阵、功能描述与实现、相关API和示例程序进行介绍 ESP32中断矩阵将任一外部中断源单独分配到每个CPU的任一外部中断上,提供了强大的灵活性,能适应不同的应用需求。 ESP32中断主…

软路由系统iStoreOS 一键安装 docker compose

一键安装命令 大家好!今天我来分享一个快速安装 docker-compose 的方法。以下是我常用的命令,当前版本是 V2.32.4。如果你需要最新版本,可以查看获取docker compose最新版本号 部分,获取最新版本号后替换命令中的版本号即可。 w…

CSRF攻击XSS攻击

概述 ​在 HTML 中&#xff0c;<a>, <form>, <img>, <script>, <iframe>, <link> 等标签以及 Ajax 都可以指向一个资源地址&#xff0c;而所谓的跨域请求就是指&#xff1a;当前发起请求的域与该请求指向的资源所在的域不一样。这里的域指…

企业分类相似度筛选实战:基于规则与向量方法的对比分析

文章目录 企业表相似类别筛选实战项目背景介绍效果展示基于规则的效果基于向量相似的效果 说明相关文章推荐 企业表相似类别筛选实战 项目背景 在当下RAG&#xff08;检索增强生成&#xff09;技术应用不断发展的背景下&#xff0c;掌握文本相似算法不仅能够助力信息检索&…

python编程-OpenCV(图像读写-图像处理-图像滤波-角点检测-边缘检测)角点检测

角点检测&#xff08;Corner Detection&#xff09;是计算机视觉和图像处理中重要的步骤&#xff0c;主要用于提取图像中的关键特征&#xff0c;以便进行后续的任务&#xff0c;比如图像匹配、物体识别、运动跟踪等。下面介绍几种常用的角点检测方法及其应用。 1. Harris角点检…

RC2在线加密工具

RC2是由著名密码学家Ron Rivest设计的一种传统对称分组加密算法&#xff0c;它可作为DES算法的建议替代算法。RC2是一种分组加密算法&#xff0c;RC2的密钥长度可变&#xff0c;可以从8字节到128字节&#xff0c;安全性选择更加灵活。 开发调试上&#xff0c;有时候需要进行对…

玩转大语言模型——使用graphRAG+Ollama构建知识图谱

系列文章目录 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型——使用graphRAGOllama构建知识图谱 文章目录 系列文章目录前言下载和安装用下载项目的方式下载并安装用pip方式下载并安装 生成知…

【王树森搜索引擎技术】相关性01:搜索相关性的定义与分档

工业界是怎么做的&#xff1f; 制定标注规则 -> 标注数据 -> 训练模型 -> 线上推理搜索产品和搜索算法团队定义相关性标注规则 认为地将 (q,d) 相关性划分为 4个 或 5个 档位相关性文档规则非常重要&#xff01;假如日后有大幅度变动&#xff0c;需要重新标注数据&am…

学习threejs,使用FlyControls相机控制器

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.FlyControls 相机控制…

LabVIEW 程序中的 R6025 错误

R6025错误 通常是 运行时库 错误&#xff0c;特别是与 C 运行时库 相关。这种错误通常会在程序运行时出现&#xff0c;尤其是在使用 C 编译的程序或依赖 C 运行时库的程序时。 ​ 可能的原因&#xff1a; 内存访问冲突&#xff1a; R6025 错误通常是由于程序在运行时访问无效内…

第4章 Kafka核心API——Kafka客户端操作

Kafka客户端操作 一. 客户端操作1. AdminClient API 一. 客户端操作 1. AdminClient API

Tarjan算法笔记

Tarjan 内容概要 dfs 搜索树 首先&#xff0c;我们要知道&#xff0c;Tarjan 算法来源于搜索树&#xff0c;那是什么呢&#xff0c;顾名思义就是按照搜索的顺序来遍历&#xff0c;所产生的顺序构成的树。首先我们可以来举个有向图的例子&#xff1a; 所以我们可以知道 dfs 生…

socket网络通信基础

目录 一、套接字编程基本流程 二、TCP流式协议及Socket编程的recv()和send() 三、读写无阻塞-完美掌握I/O复用 select&#xff08;&#xff09;函数详解 poll&#xff08;&#xff09;函数详解 epoll () 函数详解 一、套接字编程基本流程 原文链接&#xff1a;Socket编程…

接口防篡改+防重放攻击

接口防止重放攻击&#xff1a;重放攻击是指攻击者截获了一次有效请求(如交易请求),并在之后的时间里多次发送相同的请求&#xff0c;从而达到欺骗系统的目的。为了防止重放攻击&#xff0c;通常需要在系统中引入一种机制&#xff0c;使得每个请求都有一个唯一的标识符(如时间戳…

庄小焱——2024年博文总结与展望

摘要 大家好&#xff0c;我是庄小焱。岁末回首&#xff0c;2024 年是我在个人成长、博客创作以及生活平衡方面收获颇丰的一年。这一年的经历如同璀璨星辰&#xff0c;照亮了我前行的道路&#xff0c;也为未来的发展奠定了坚实基础。 1. 个人成长与突破 在 2024 年&#xff0c…

在线base64转码工具

在线base64转码工具&#xff0c;无需登录&#xff0c;无需费用&#xff0c;用完就走。 官网地址&#xff1a; https://base64.openai2025.com 效果&#xff1a;

鸿蒙学习构建视图的基本语法(二)

一、层叠布局 // 图片 本地图片和在线图片 Image(https://developer.huawei.com/allianceCmsResource/resource/HUAWEI_Developer_VUE/images/080662.png) Entry Component//自适应伸缩 设置layoutWeight属性的子元素与兄弟元素 会按照权重进行分配主轴的空间// Position s…

OA-CNN:用于 3D 语义分割的全自适应稀疏 CNN

大家读完觉得有帮助记得及时关注和点赞&#xff01;&#xff01;&#xff01; 1介绍 2相关工作 基于点的学习。 基于 CNN 的学习。 动态卷积。 3全能自适应 3D 稀疏 CNN 3.1空间适应性感受野 赋予动机。 体素网格。 金字塔网格分区。 Adaptive 聚合器。 3.2自适应关…

利用 LNMP 实现 WordPress 站点搭建

部署MySQL数据库 在主机192.168.138.139主机部署数据库服务 包安装数据库 apt-get install mysql-server 创建wordpress数据库和用户并授权 mysql> create database wordpress;#MySQL8.0要求指定插件 mysql> create user wordpress192.168.138.% identified with mys…