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

docker-高级(待补图)

文章目录

    • 数据卷(Volume)
      • 介绍
      • 查看方法
      • 删除方法
      • 绑定方法
        • 匿名绑定
        • 具名绑定
        • Bind Mount
      • 数据卷管理
    • 网络
      • bridge(桥接模式 默认)
      • HOST(主机模式)
      • None
      • container(指定一个容器进行关联网络共享)
      • 自定义(推荐)
        • docker network 命令
        • 创建网络
          • docker network create
        • 实例展示-自定义
        • 实例展示-桥接(默认)
        • 不同网络模式下的容器连接问题

数据卷(Volume)

介绍

  • 连接容器与主机的存储的介质
  • 强制删除容器并不会删除相应的数据卷,只会删除容器本身

查看方法

docker volume ls

删除方法

docker volume rm [VOLUME NAME]

绑定方法

匿名绑定

使用docker inspect 命令查找 Mounts关键词,Source:主机内目录,Destination:容器内目录
在使用 --rm 退出即删除容器时,匿名数据卷也会被删除,但使用docker rm 删除容器,匿名卷不会被自动删除

-v [CONTAINER SOURCE]

例如:

docker run --rm -d -p 80:80--name nginx_volume -v usr/share/nginx/html nginx
具名绑定

卸载docker后Volume也会被删除。
在使用 --rm 退出即删除容器时,具名绑定数据卷不会被删除)。
无法自由地使用指定的目录绑定容器的数据卷,只能使用数据卷自动生成的目录。

-v [VOLUME NAME]:[CONTAINER SOURCE]

例如:

docker run --rm -d -p 80:80 --name nginx_volume -v nginx-html:/usr/share/nginx/html nginx
Bind Mount

卸载docker后Volume依然存在。
绑定并加载主机的某个文件目录到容器中(覆盖容器中的文件目录)。

-v [HOST SOURCE]:[CONTAINER SOURCE]

例如:

docker run --rm -d -p 80:80 --name nginx_volume -v www/nginx/html:/usr/share/nginx/html nginx

数据卷管理

docker volume参数:
create [VOLUME NAME]:创建数据卷
inspect [VOLUME NAME]:查看一个或多个数据卷的细节(创建时间、driver(驱动)、Labels(标签)、Mountpoint(主机内的加载路径)、Nanme(数据卷名字)、Options(选项)、Scope(作用域))
ls:列出数据卷
prune:删除本地未被使用的数据卷
rm [VOLUME NAME1] [VOLUME NAME2]...:删除一个或多个数据卷

网络

介绍:是Dockr对容器网络隔离的一项技术,提供了多种不同的模式供用户使用,选择不同的网络模式来实现容器网络的互通以及彻底的隔离。
目的:容器间的网络隔离、实现部分容器之间的网络共享、管理多个子网下容器的ip
作用:提供了多种模式,可以定制化的为每个容器制定不同的网络;自定义网络模式,划分不同的子网以及网关、dns等配置;网络互通,实现不同子网之间的网络互通、基于容器名(主机名)的方式在网络内访问

bridge(桥接模式 默认)

在主机中创建一个docker0的虚拟网桥(交换机),在docker0创建一对虚拟网卡,一半在主机上为vethxxx,还有一半在容器内eth0。
内部容器中网络可直接互通,但外部其他主机进行访问时,必须要先访问主机中的物理网卡–>虚拟网桥–>vethxxx–>eth0
[图片]

HOST(主机模式)

容器不再拥有自己的网络空间,而是直接与主机共享网络空间,基于该模式创健的容器的ip与主机是在同一个子网同一个网段中。
缺点:安全性较低,复用性较低。
[图片]

None

Docker将拥有有自己的网络空间,不与主机共享,在这个网络模式下的容器,不会被分配网卡、识、路由等相关信息。
只能在宿主机中使用 docker exec 等命令访问容器。
特点:完全隔离,与外部任何机器都无网络访问,只有自己的lo网卡 127.0.0.1。

[图片]

container(指定一个容器进行关联网络共享)

不会创建自己的网络空间,而是与其他容器共享网络空间,直接使用指定容器的ip或端口等。
[图片]

自定义(推荐)

不适用Dockr自带的网络模式,而是自己去定制化自己特有的网络模式。ckr自带的网络模式,而是自己去定制化自己特有的网络模式。

docker network 命令
docker network [Commands]参数:
connect:将容器连接到网络
create:创建网络
disconnect:将容器与网络断开连接
inspect:显示一个或多个网络的详细信息
ls:列出网络
prune:删除所有未使用的网络
rm:删除一个或多个网络
创建网络
docker network create
docker network create [OPTIONS] NETWORK参数:
-d, --driver string    Driver to manage the Network (default "bridge")
--gateway strings      IPv4 or IPv6 Gateway for the master subnet
--subnet strings       Subnet in CIDR format that represents a network segment--attachable           Enable manual container attachment--aux-address map      Auxiliary IPv4 or IPv6 addresses used by Network driver (default map[])--config-from string   The network from which to copy the configuration--config-only          Create a configuration only network--ingress              Create swarm routing-mesh network--internal             Restrict external access to the network--ip-range strings     Allocate container ip from a sub-range--ipam-driver string   IP Address Management Driver (default "default")--ipam-opt map         Set IPAM driver specific options (default map[])--ipv6                 Enable IPv6 networking--label list           Set metadata on a network
-o, --opt map              Set driver specific options (default map[])--scope string         Control the network's scope
实例展示-自定义

目的:展现主机无法与容器实现网络互通,但是容器之间可以进行网络互通的效果。
准备:使用centos镜像进行测试。由于centos是一个系统不是一个软件,一般作为基础镜像去使用,所以运行为一个容器时,centos会自动退出。

#1. 下载centos镜像
docker pull centos#2. 在docker中创建一个桥接网络,并指定网络配置(宿主机ip为192.168.1.x,为了展现主机无法与容器实现网络互通,所以这里指定了192.168.3.x)
docker network create --driver bridge --subnet 192.168.3.0/24 --gateway 192.168.3.1 test_network
docker network ls#3.1 方法一:通过ping本地ip保证centos不会退出。
docker run -d --rm -P --name centos_network1 --net test_network centos ping 127.0.0.1#3.2 方法二:使用 itd 参数。-i,以交互模式运行容器,并保持终端激活。-t,--tty:为容器分配一个伪终端。-d, --detach 后台运行,守护线程,并返回容器ID。
docker run -i -t -d --rm -P --name centos_network2 --net test_network centosdocker ps -a or docker ps#4.测试容器之间网络的连通性
docker exec -it centos_network1 ping centos_network2#查看两个基于test_network网络创建出来的centos容器的网络信息
docker exec centos_network1 ip a
docker exec centos_network2 ip a
实例展示-桥接(默认)

目的:使用自带的bridge网络模式
原理:在hosts内配置主机名及IP地址

#创建两个容器,并使docker_network2连通docker_network1
docker run -i -t -d --rm -P --name docker_network1 centos
docker run -i -t -d --rm -P --name docker_network2 --link docker_network1 centos#测试docker_network2连接到docker_network1 成功
[root@localhost ~]# docker exec -it docker_network2 ping docker_network1
PING docker_network1 (172.17.0.2) 56(84) bytes of data.
64 bytes from docker_network1 (172.17.0.2): icmp_seq=1 ttl=64 time=0.077 ms#测试docker_network1连接到docker_network2 失败
[root@localhost ~]# docker exec -it docker_network1 ping docker_network2
ping: docker_network2: Name or service not known
不同网络模式下的容器连接问题

[图片]
测试环境:
docker0:Docker的虚拟网桥 172.17.0.1 <---->容器1 eth0–> 网络模拟:默认 172.17.0.2
test_network:自定义网络 192.168.3.1 <---->容器2 eth0–> 网络模拟:test_network 192.168.3.2

原理:给其中一个容器创建一个虚拟网卡,并连接到另一个容器中的网段中。
[图片]

#创建容器1 docker_net1
docker run -i -t -d --rm -P --name docker_net1 centos#创建容器2 centos_net2
docker run -i -t -d --rm -P --name centos_net2 --net test_network centos#未作连接前两个不同网络模式下的容器无法连接
[root@localhost ~]# docker exec -it docker_net1 ping centos_net2 
ping: centos_net2: Name or service not known#连接两个不同网络模式下的容器
docker network connect test_network docker_net1# 测试连接 成功
[root@localhost ~]# docker exec -it docker_net1 ping centos_net2 
PING centos_net2 (192.168.3.2) 56(84) bytes of data.
64 bytes from centos_net2.test_network (192.168.3.2): icmp_seq=1 ttl=64 time=0.091 ms

相关文章:

docker-高级(待补图)

文章目录 数据卷(Volume)介绍查看方法删除方法绑定方法匿名绑定具名绑定Bind Mount 数据卷管理 网络bridge(桥接模式 默认)HOST(主机模式)Nonecontainer(指定一个容器进行关联网络共享)自定义(推荐)docker network 命令创建网络docker network create 实例展示-自定义实例展示-…...

Qt 文件目录操作

Qt 文件目录操作 QDir 类提供访问系统目录结构 QDir 类提供对目录结构及其内容的访问。QDir 用于操作路径名、访问有关路径和文件的信息以及操作底层文件系统。它还可以用于访问 Qt 的资源系统。 Qt 使用“/”作为通用目录分隔符&#xff0c;与“/”在 URL 中用作路径分隔符…...

Pandas 数据清洗

1.数据清洗定义 数据清洗是对一些没有用的数据进行处理的过程。很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况&#xff0c;如果要使数据分析更加准确&#xff0c;就需要对这些没有用的数据进行处理。 2.清洗空值 DataFrame.dropna(axis0, howany, threshN…...

IO学习笔记

当前需求&#xff0c;希望进行游戏可以保存游戏进度&#xff0c;可以将游戏的进度保存到一个文本文件&#xff0c;每一次打完游戏更新文本内容&#xff0c;下一次打游戏读取游戏进度&#xff0c;这里就涉及到两个知识IO流和File的知识。 File类 概述 java.io.File 类是文件…...

汇编练习-1

1、要求 练习要求引自《汇编语言-第4版》实验10.3(P209页) -编程&#xff0c;将data段中的数据&#xff0c;以10进制的形式显示出来 data segment dw 123,12666,1,8,3,38 data ends 2、实现代码(可惜没找到csdn对8086汇编显示方式) assume cs:codedata segmentdw 16 dup(0) ;除…...

初识二叉树( 二)

初识二叉树 二 实现链式结构二叉树前中后序遍历遍历规则代码实现 结点个数以及高度等层序遍历判断是否为完全二叉树 实现链式结构二叉树 ⽤链表来表示⼀棵二叉树&#xff0c;即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成&#xff0c;数据域和左右指针…...

AcWing1077-cnblog

问题背景 给定一个树形结构的图&#xff0c;每个节点代表一个地点&#xff0c;每个节点有一个守卫的代价。我们希望以最低的代价在树的节点上放置守卫&#xff0c;使得整棵树的所有节点都被监控。可以通过三种方式覆盖一个节点&#xff1a; 由父节点监控。由子节点监控。自己…...

五、SpringBoot3实战(1)

一、SpringBoot3介绍 1.1 SpringBoot3简介 SpringBoot版本&#xff1a;3.0.5 https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.introducing-spring-boot 到目前为止&#xff0c;你已经学习了多种配置Spring程序的方式…...

练习LabVIEW第三十三题

学习目标&#xff1a; 刚学了LabVIEW&#xff0c;在网上找了些题&#xff0c;练习一下LabVIEW&#xff0c;有不对不好不足的地方欢迎指正&#xff01; 第三十三题&#xff1a; 用labview编写一个判断素数的程序 开始编写&#xff1a; LabVIEW判断素数&#xff0c;首先要搞…...

如何在服务器端对PDF和图像进行OCR处理

介绍 今天我想和大家分享一个我在研究技术资料时发现的很好玩的东西——Tesseract。这不仅仅是一个普通的库&#xff0c;而是一个用C语言编写的OCR神器&#xff0c;能够识别一大堆不同国家的语言。我一直在寻找能够处理各种文档的工具&#xff0c;而Tesseract就像是给了我一把…...

Windows 下实验视频降噪算法 MeshFlow 详细教程

MeshFlow视频降噪算法 Meshflow 视频降噪算法来自于 2017 年电子科技大学一篇高质量论文。 该论文提出了一个新的运动模型MeshFlow&#xff0c;它是一个空间平滑的稀疏运动场 (spatially smooth sparse motion field)&#xff0c;其运动矢量 (motion vectors) 仅在网格顶点 (m…...

Python入门:如何正确的控制Python异步并发量(制并发量的关键技巧与易错点解析)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 异步并发量控制 📒📝 Python异步并发简介📝 为什么要限制并发量🎈 资源管理🎈 服务稳定性📝 新手容易犯的错误🎈 忽略并发量限制🎈 错误设置并发量📝 设置并发量要注意的事情🎈 了解任务类型🎈 考虑系统资…...

qt QCheckBox详解

QCheckBox 是 Qt 框架中的一个控件&#xff0c;用于创建复选框&#xff0c;允许用户进行选择和取消选择。它通常用于表单、设置界面和任何需要用户选择的场景。 QCheckBox继承自QAbstractButton类&#xff0c;因此继承了按钮的特性。它表示一个复选框&#xff0c;用户可以通过…...

PAT甲级-1041 Be Unique

题目 题目大意 从一组数字中选出第一个唯一出现的数&#xff0c;输出该数。如果没有&#xff0c;则输出None。 思路 哈希的思想&#xff0c;将数值作为索引&#xff0c;对应该数值出现的次数&#xff0c;然后遍历数组即可。 注意第一个数字是指数字的个数&#xff0c;不是数…...

【jvm】如何设置堆内存大小

目录 1. 使用命令行参数设置2. idea中设置3. 注意事项 1. 使用命令行参数设置 1.在Java命令后添加-Xms和-Xmx参数。2.-Xms参数用于设置JVM的初始堆内存大小&#xff0c;等价于-XX:InitialHeapSize。3.-Xmx参数用于设置JVM的最大堆内存大小&#xff0c;等价于-XX:MaxHeapSize。…...

kernel源码分析 do_msgsnd read_msg

笔者分析的源码是v 5.11.22 链接&#xff1a;msg.c - ipc/msg.c - Linux source code v5.11.22 - Bootlin do_msgsnd static long do_msgsnd(int msqid, long mtype, void __user *mtext,size_t msgsz, int msgflg) {struct msg_queue *msq;struct msg_msg *msg;int err;str…...

掌握 CTE 技巧,实现连续日期和月份的 SQL 报表统计

在 SQL 查询中&#xff0c;报表统计往往涉及到特定时间段内的数据汇总&#xff0c;如每日、每月的销售数据等。然而&#xff0c;面对缺少数据的日期或月份&#xff0c;传统 SQL 查询可能会直接跳过这些日期&#xff0c;使得输出的报表在视觉上并不连续。本文将展示如何利用 CTE…...

【表格解决问题】EXCEL行数过多,WPS如何按逐行分别打印多个纸张中

1 问题描述 如图&#xff1a;我的表格行数太多了。打印在一张纸上有点不太好看 2 解决方式 Step01&#xff1a;先选中你需要打印的部分&#xff0c;找到【页面】->【打印区域】->【设置打印区域】 Step02&#xff1a;先选中一行&#xff0c;找到【插入分页符】 Step0…...

Maven讲解从基础到高级配置与实践

一、基础认知 1.1 Maven 的主要作用 Maven 主要是用来管理 Java 项目构建流程的工具&#xff0c;包括以下几个方面&#xff1a; 依赖管理&#xff1a;通过 POM.xml 文件管理项目的外部依赖库&#xff0c;不同版本的依赖包可以通过 Maven 中央仓库自动下载&#xff0c;减少了…...

Vue3组件式父子传值

下面是使用 <script setup> 语法的 Vue 3 组件之间传值的示例。 示例 1:使用 Props 和 Emits 父组件 <template><div><h1>父组件</h1><ChildComponent :message="parentMessage" @reply="handleReply" /><p>…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...