Docker-数据卷网络

docker数据卷

docker volume ls #查看有哪些数据卷
docker volume inspect mysql-db #查看具体数据卷的元信息
docker container run -d --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=True -v mysql-db:/var/lib/mysql mysql #会在docker 的卷下面新建一个mysqldb

在这里插入图片描述
在这里插入图片描述

用于数据持久化,需要注意点是一般启动容器的时候需要加–privileged=true否则可能没有权限操作挂载目录。

  • / -v指定了容器路径和主机目录的映射,如果希望容器只读的话/data/mysql/logs:/var/log/mysql:ro 可以加:ro来进行限制
  • / -e 是环境变量,这是在构建镜像的时候暴露出来,可以通过这个去配置容器的一些属性和参数,比如这里配置了了mysql的密码。
 docker run -d -p 13306:3306 --privileged=true -v /data/mysql/logs:/var/log/mysql -v /data/mysql/data:/var/lib/mysql -v /opt/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=654321  --name mysql mysql:5.7

容器之间的继承也就是说一个容器可以完全复用另一个容器的数据卷,且当前的这个容器不会受被继承者的影响,也就是说被继承者挂掉了,当前容器的运行也不会有任何影响。
一个简单的例子如下:

docker run -itd ---privileged=true --volumes-from 父容器 --name newcontainer mysql

docker网络

docker容器的网络和宿主机不是同一个网段,是和docker0同一个网段。

#安装工具网络工具
yum install bridge-utils
#可以查看网桥
brctl show
#擦可能看端口映射
docker container port redis
#查看内部docker内部IP
docker container inspect redis | grep IPAddress
#查看reids的IP
docker container inspect --format '{{ .NetworkSettings.IPAddress }}' redis

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Docker会自动创建三个网络:

在这里插入图片描述

  • Bridge:此模式会为每一个容器分配、设置 IP 等,并将容器连接到一个 docker0 虚拟网桥,通过 docker0 网桥以及 Iptables nat 表配置与宿主机通信。
  • host:容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的IP和端口(和宿主机共用一个 Network Namespace)。
  • None:该模式关闭了容器的网络功能。
  • Container:创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围。

Docker内置这三个网络,运行容器时,可以用 --network / –net 选项指定容器的网络模式:

  • host 模式:使用 –net=host 指定。
  • none 模式:使用 –net=none 指定。
  • bridge 模式:使用 –net=bridge 指定,默认设置。
  • container 模式:使用 –net=container:NAME_or_ID 指定。
  • 基础命令
#查看网络模式 更多命令docker network --help
docker network ls 
#查看网络模式的详细信息
docker network inspect bridge 

可以看到这个网络下面连接了那些容器:
在这里插入图片描述

docker inspect redis | tail  -n 20 #查看容器网络
#容器内部IP是会发生变化的,随着服务的停止重启创建,会被分配到其它的IP。

在这里插入图片描述

  • 网络模式
    在这里插入图片描述
    网桥模式工作原理
    Docker 服务默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),该桥接网络的名称为docker0,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker 默认指定了 docker0 接口 的 IP 地址和子网掩码,让主机和容器之间可以通过网桥相互通信。
docker network inspect bridge | grep name #查看bride网络详细信息

具体的容器在启动的时候网桥docker0创建一对对等虚拟设备接口一个叫veth,另一个叫eth0,成对匹配。
整个宿主机的网桥模式都是docker0,类似一个交换机有一堆接口,每个接口叫veth,在本地主1)机和容器内分别创建一个虚拟接口,并让他们彼此联通(这样一对接口叫veth pair);
2)每个容器实例内部也有一块网卡,每个接口叫eth0;
3)docker0上面的每个veth匹配某个容器实例内部的eth0,两两配对,一一匹配。
通过上述,将宿主机上的所有容器都连接到这个内部网络上,两个容器在同一个网络下,会从这个网关下各自拿到分配的ip,此时两个容器的网络是互通的。
在这里插入图片描述
如下图一个veth对应这一个eth
在这里插入图片描述
我们随便查看一个网桥模式的容器:
在这里插入图片描述
从上图可以看到网桥模式每个容器有自己的IP和网关。

主机模式
容器将不会获得一个独立的Network Namespace, 而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡而是使用宿主机的IP和端口。
在这里插入图片描述
案例验证:

docker run -d -p 8083:8080 --network host --name tomcattest tomcat:latest

在这里插入图片描述
这里会出现警告因为你不是网桥模式是直接用主机的端口,添加端口映射没有意义。

docker run -d  --network host --name tomcattest tomcat:latest

可以看到没有自己的IP和网关,都是借用主机的
在这里插入图片描述
none模式
禁用网络功能,只有lo标识

docker run -d -p 8083:8080 --network none --name tomcattest tomcat:latest

container模式
新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。
在这里插入图片描述

docker run -d --network container:容器名称 --name demo

注意如果被共用的容器挂了,这这个共享的容器也没有网络了,只有本地回环。

docker自定义网络

自定义网络是经某些服务集中,可以通过服务名相互访问。如果不用服务名需要写死容器IP,但是容器IP可能会变化,这样可能导致某些服务访问不到。
案例实操

#创建自定义网络
docker network create custom_network 

在同一个网络下启动容器,这样这个容器就能够通过服务名互通

docker run -d -p 8081:8080 --network custom_network --name tomcat81 tomat:latest
docker run -d -p 8082:8080 --network custom_network --name tomcat82 tomat:latest
#将我们的应用连接到某一个网络 
docker network connect custom_networkwebhost #网络名 应用名
docker network inspect custom_network
#取消连接网络
docker network disconnect custom_network webhost
docker network connect custom_network redis #我们让reids 也连接到custom_network 上,可以看到redis除了之前的bridge网络 还有custom_network网络

这样的话redis就可以和多个网络进行通信,就比如我们在启动一个容器然后连接到custom_network网络,然后再内部是可以直接ping通reds的。
在这里插入图片描述
通过别名设置负载均衡

  • 下面我来部署一个应用
FROM primetoninc/jdk:1.8
#FROM rajkiranp/javapython:latest
# 维护人员
MAINTAINER liyong@dist.com.cn
# 工作目录
WORKDIR webApi
ADD ./target/gis-ubantu-test-2.3.12.RELEASE.jar /webApi/gis-ubantu-test-2.3.12.RELEASE.jar
ENTRYPOINT ["java", "-jar", "gis-ubantu-test-2.3.12.RELEASE.jar"]
docker container run -d --net custom_network --net-alias demoserver demo:1.0
docker container run -d --net custom_network --net-alias demoserver demo:1.0
#发送指令进行请求 --rm表示运行完成后就关闭
docker container run --rm --net custom_network centos curl -s demoserver:8081/port

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

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

相关文章

架构篇02-架构设计的历史背景

文章目录 机器语言(1940 年之前)汇编语言(20 世纪 40 年代)高级语言(20 世纪 50 年代)第一次软件危机与结构化程序设计(20 世纪 60 年代~20 世纪 70 年代)第二次软件危机与面向对象&…

使用Python+pygame实现贪吃蛇小游戏

使用Pythonpygame贪吃蛇小游戏 使用第三方库pygame,关于Python中pygame游戏模块的安装使用可见 https://blog.csdn.net/cnds123/article/details/119514520 给出两种实现。 第一种 运行效果如下: 游戏源码如下: import pygame import sy…

STM32——IIC知识总结及实战

1 IIC概念及结构体 IIC:Inter Integrated Circuit,集成电路总线,是一种同步 串行 半双工通信总线。 结构图 2 IIC协议时序 ① 起始信号 当 SCL 为高电平期间,SDA 由高到低的跳变。起始信号是一种电平跳变时序信号,而…

python输出运行设备进程信息

要获取运行设备的进程信息,你可以使用Python的psutil库。这个库提供了一种简单的方式来获取系统使用情况,包括进程信息。 首先,你需要安装psutil库。如果你还没有安装,可以使用pip来安装: bash pip install psutil 然…

Shiro + JWT + Spring Boot Restful 简易教程

Shiro JWT Spring Boot Restful 简易教程 GitHub 项目地址:github.com/Smith-Cruis… 。 原文地址:www.inlighting.org/archives/sp…。 序言 我也是半路出家的人,如果大家有什么好的意见或批评,请务必 issue 下。 如果想要…

【EI会议征稿通知】2024年第三届能源互联网及能源交互技术国际会议(EIEIT 2024)

2024年第三届能源互联网及能源交互技术国际会议(EIEIT 2024) 2024 3rd International Conference on the Energy Internet and Energy Interactive Technology 随着EIEIT前2届的成功举办,我们很荣幸地宣布,2024年第三届能源互联网及能源交互技术国际学术…

通过Vscode 简单创建一个vue3+element的项目

首先确保安装的nodejs是18版本以上 确保你安装了最新版本的 Node.js,并且你的当前工作目录正是打算创建项目的目录。在命令行中运行以下命令 VSCode打开终端 输入构建项目命令,个人推荐如果有cnpm使用cnpm npm create vuelatest cnpm create vuelate…

YOLOv5改进 | 检测头篇 | ASFFHead自适应空间特征融合检测头(全网首发)

一、本文介绍 本文给大家带来的改进机制是利用ASFF改进YOLOv5的检测头形成新的检测头Detect_ASFF,其主要创新是引入了一种自适应的空间特征融合方式,有效地过滤掉冲突信息,从而增强了尺度不变性。经过我的实验验证,修改后的检测头在所有的检测目标上均有大幅度的涨点效果,…

AI与区块链的完美交融创新时代的双重引擎

每个投资者都梦想早日进入“下一个亚马逊、苹果或比特币”,以追求代际财富。 然而,这些机会很少而且相距甚远,而且正如每一个虔诚的加密货币本地人都知道的那样,这条道路上常常布满了失败的项目、失信的承诺和波动。 但在 2023 …

uniapp 移动端app判断用户app版本是否是最新版(Android)

1.在uniapp项目中的App.vue文件下 <script>import { ref } from vue;const token ref();export default {onLaunch: function() {// #ifdef APP//获取打包时设置的版本号&#xff0c;然后存到storage里plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) > {u…

用Python做数据分析之生成数据表

第一部分是生成数据表&#xff0c;常见的生成方法有两种&#xff0c;第一种是导入外部数据&#xff0c;第二种是直接写入数据。 Excel 中的文件菜单中提供了**外部数据的功能&#xff0c;支持数据库和文本文件和页面的多种数据源导入。 获取外部数据 python支持从多种类型的数…

mybtis动态SQL注解 脚本动态SQL\方法中构建SQL\SQL语句构造器

mybtis动态SQL注解 动态SQL注解脚本动态SQL方法中构建SQLSQL语句构造器 动态SQL注解 分类&#xff1a; 脚本动态SQL&#xff1a;XML配置方式的动态SQL&#xff0c;是用<script>的方式把它照搬过来&#xff0c;用注解来实现。适用于xml配置转换到注解配置方法中构建SQL&…

Hive数据导出的四种方法

hive数据仓库有多种数据导出方法&#xff0c;我在本篇文章中介绍下面的四种方法供大家参考&#xff1a;Insert语句导出、Hadoop命令导出、Hive shell命令导出、Export语句导出。 一、Insert语句导出 语法格式 Hive支持将select查询的结果导出成文件存放在文件系统中。语法格…

flink1.15 维表join guava cache和mysql方面优化

优化前 mysql响应慢,导致算子中数据输出追不上输入,导致显示cpu busy:100% 优化后效果两个图对应两个时刻: - - -- 优化前 select l.id,JSON_EXTRACT(r.msg,$$.key1) as msgv (select id,uid from tb1 l where id?) join (select uid,msg from tb2) r on l.uidr.uid;-- 优化…

STM32+HAL库驱动ADXL345传感器(SPI协议)

STM32HAL库驱动ADXL345传感器&#xff08;SPI协议&#xff09; ADXL345传感器简介实物STM32CubeMX配置SPI配置片选引脚配置串口配置 特别注意&#xff08;重点部分&#xff09;核心代码效果展示 ADXL345传感器简介 ADXL345 是 ADI 公司推出的基于 iMEMS 技术的 3 轴、数字输出加…

Flink(十三)【Flink SQL(上)】

前言 最近在假期实训&#xff0c;但是实在水的不行&#xff0c;三天要学完SSM&#xff0c;实在一言难尽&#xff0c;浪费那时间干什么呢。SSM 之前学了一半&#xff0c;等后面忙完了&#xff0c;再去好好重学一遍&#xff0c;毕竟这玩意真是面试必会的东西。 今天开始学习 Flin…

前端常见面试题之ajax、http

文章目录 一、手写ajax请求1. get2. post3. xhr.readyState4. xhr.status5. xhr.open 二、跨域三、cookie、localStorage和sessionStorage四、http1. http常见的状态码有哪些2. http常见的header有哪些3. 什么是RestfulAPI4. 描述一下http的缓存机制5. https 一、手写ajax请求 …

专业140+总410+哈尔滨工业大学803信号与系统和数字逻辑电路考研经验哈工大电子信息(信息与通信工程-信通)

一年的努力付出终于有了收获&#xff0c;今年专业课140&#xff0c;总分410顺利上岸哈工大803电子信息&#xff08;信息与通信-信通&#xff09;&#xff0c;回顾总结了自己这一年的复习&#xff0c;有得有失&#xff0c;希望对大家复习有所帮助。 数学 时间安排&#xff1a;…

Spring Boot中实现订单30分钟自动取消的策略

Spring Boot中实现订单30分钟自动取消的策略 简介 在电商和其他涉及到在线支付的应用中&#xff0c;通常需要实现一个功能&#xff1a;如果用户在生成订单后的一定时间内未完成支付&#xff0c;系统将自动取消该订单。本文将详细介绍基于Spring Boot框架实现订单30分钟内未支…

P9840 [ICPC2021 Nanjing R] Oops, It‘s Yesterday Twice More题解

[ICPC2021 Nanjing R] Oops, It’s Yesterday Twice More 传送门 题面翻译 有一张 n n n\times n nn 的网格图&#xff0c;每个格子上都有一只袋鼠。对于一只在 ( i , j ) (i,j) (i,j) 的袋鼠&#xff0c;有下面四个按钮&#xff1a; 按钮 U&#xff1a;如果 i > 1 …