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.rhkb.cn/news/239242.html

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

相关文章

力扣hot100 杨辉三角 递归 DP

Problem: 118. 杨辉三角 文章目录 思路复杂度💖 DP💖 从下往上递归 思路 👨‍🏫 参考地址 复杂度 时间复杂度: 添加时间复杂度, 示例: O ( n ) O(n) O(n) 空间复杂度: 添加空间复杂度, 示例: O ( n ) …

Linux/Frolic

Enumeration nmap 还是扫描系统对外开放的端口情况,对外开放了22,139,445,还有9999端口,显示是http服务,使用了nginx 1.10.3 ┌──(kali㉿kali)-[~/HTB/Frolic] └─$ nmap -sC -sV -oA nmap -Pn 10.10.10.111 Starting Nmap 7.93 ( http…

Linux第25步_在虚拟机中备份“ST官方的TF-A源码”

TF-A是ARM公司提供的,ST公司通过修改它,做了一个自己的TF-A代码。因为在后期开发中,若硬件被改变了,我们需要通过修改"ST官方的TF-A源码"就可以自己的TF-A代码了。为了防止源文件被误改了,我们需要将"S…

【经典算法】有趣的算法之---遗传算法梳理

every blog every motto: You can do more than you think. 0. 前言 遗传算法是一种基于自然选择和遗传机制的优化算法,因此它通常被用于求解各种最优化问题,例如函数优化、特征选择、图像处理等。 一言以蔽之: 将数学中的优化问题&#xf…

ZooKeeper 实战(三) SpringBoot整合Curator-开发使用篇

文章目录 ZooKeeper 实战(三) SpringBoot整合Curator-开发使用篇0. ZooKeeper客户端 1. Curator1.1. 简介1.2. 应用场景1.3. 优势1.4. 依赖说明 2. 依赖导入3. 配置类3.1. 重试策略3.2. 实现代码3.3. 总结 4. Curator中的基本API4.1. 创建节点CreateMode中的节点类型4.2. 查询节…

【MATLAB源码-第114期】基于matlab的孔雀优化算法(POA)无人机三维路径规划,输出做短路径图和适应度曲线。

操作环境: MATLAB 2022a 1、算法描述 POA(孔雀优化算法)是一种基于孔雀羽毛开屏行为启发的优化算法。这种算法模仿孔雀通过展开其色彩斑斓的尾羽来吸引雌性的自然行为。在算法中,每个孔雀代表一个潜在的解决方案,而…

通过IDE和jar包运行时加载json配置文件

程序中使用了json配置文件,位置在$rootPath/src/main/resources/config.json, 调试时使用IDE,但运行时使用Jar包,加载config.json配置文件的代码如下: public ConfigParser(String configFileName) throws IOException {try{Inp…

用el-image-viewer实现全局预览图片

背景 在后台管理系统中,一些预览图片的场景,通常都是使用 el-image-viewer 去实现,但是如果多个地方都需要预览图片,又要重复的去写 el-image-viewer 以及一些重复的和预览相关的代码。 可以把预览图片的组件放在根文件&#x…

Python - Bert-VITS2 语音推理服务部署

目录 一.引言 二.服务搭建 1.服务配置 2.服务代码 3.服务踩坑 三.服务使用 1.服务启动 2.服务调用 3.服务结果 四.总结 一.引言 上一篇文章我们介绍了如果使用 conda 搭建 Bert-VITS2 最新版本的环境并训练自定义语音,通过 1000 个 epoch 的训练&#xf…

streamlit设置sidebbar和页面背景

streamlit1.29.0 1. 设置sidebar背景 代码&#xff1a; import base64 import streamlit as stdef sidebar_bg(side_bg):side_bg_ext pngst.markdown(f"""<style>[data-testid"stSidebar"] > div:first-child {{background: url(data:im…

Express框架使用全流程

1.目的和使用场景 对于像我这样不常使用 Node.js 进行开发的人来说&#xff0c;每次开始一个新项目都意味着从头开始设置环境&#xff0c;这个过程相当繁琐。因此&#xff0c;我决定自己构建一个开箱即用的项目脚手架。我的目标是创建一个简单易用的基础框架&#xff0c;能让我…

【REST2SQL】07 GO 操作 Mysql 数据库

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 MySQL是一个关系型数据库管理系统&#xf…

3dmax渲染出现马赛克该怎么办?

为什么渲染会出现马赛克问题呢&#xff0c;什么原因导致的呢&#xff0c;该如何解决呢&#xff1f; 原因一 3dmax渲染出来马赛克可能是因为勾选了 dont reder final image(不渲染最终图像)&#xff0c;所以导致3dmax渲染出来马赛克。 解决方法&#xff1a; 打开渲染器设置菜…

Linux网络文件共享服务

目录 一.文件存储类型 1.直连式存储&#xff1a;Direct-Attached Storage&#xff0c;简称DAS 2.存储区域网络&#xff1a;Storage Area Network&#xff0c;简称SAN&#xff08;可以使用空间&#xff0c;管理也是你来管理&#xff09; 3.网络附加存储&#xff1a;Network-…

windows server 2019 云服务器看不见硬盘的解决方案

刚拿的windows server 服务器看不见硬盘&#xff0c;这是因为没有初始化数据盘的原因。 解决方案如下&#xff1a; 单击“服务器管理器”仪表盘。 弹出“服务器管理器”窗口&#xff0c;如图1所示。 “服务器管理器”页面右上方选择“工具 > 计算机管理”。 弹出“计算机管…

一键批量转换,视频格式转换工具

从电影、电视剧到短视频&#xff0c;视频格式的多样性给我们的生活带来了丰富多彩的体验。然而&#xff0c;你是否曾遇到过这样的困境&#xff1a;当你从网上下载了一些视频&#xff0c;却发现格式不兼容&#xff0c;无法在你的设备上播放&#xff1f;没事&#xff0c;【视频剪…

内存泄漏检测方式

一 、 日志记录 通过宏定义重载了 malloc 和 free 函数&#xff0c;以在分配和释放内存的时候记录一些信息&#xff0c;包括文件名和行号&#xff0c;并将这些信息写入到相应的文件中。然后在 main 函数中演示了使用这些宏进行内存分配和释放。 _malloc 函数&#xff1a; 在分配…

Linux 下查找头文件和库的顺序

Linux 下查找头文件和库的顺序 C语言 — 动态库的两种使用方式说明_动态库的两种调用方式-CSDN博客 linux动态链接库的加载顺序_动态链接库顺序-CSDN博客 几个链接选项 -I 指定头文件搜索目录-L 指定静态库文件搜索目录-Wl,-R&#xff08;或-Wl,-rpath&#xff09; 指定动态库…

​LeetCode解法汇总83. 删除排序链表中的重复元素

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给定一个已排序的链表的头 head &#xf…

flash-attn库安装记录

flash-attn库安装记录 第一步&#xff1a; 安装好cuda11.7 第二步&#xff1a; 使用代码export CUDA_HOME/usr/local/cuda-11.7让库找到cuda路径 第三步&#xff1a; 使用pip install flash-attn --no-build-isolation安装 安装成功显示