docker网络【重点】

一、网络知识

1、桥接模式:用于链接两个不同网络段的设备,是共享通信的一种方式

2、桥接设备:工作在OSI模型的第二层(数据链路层)。根据MAC地址转发数据帧,类似于交换机,只能转发同一网段,通过泛洪广播找到目标地址的MAC地址,学习,然后保存在MAC地址表中

二、docker网络

1、实现方式

docker网络是基于桥接模式实现的

2、工作模式

(1)建立虚拟网络桥:安装开启docker后,docker进程就会自动创建一个虚拟网络桥(docker0)

作用:是一个虚拟的网络设备,类似于物理网络设备的交换机

2分配唯一的IP地址:每次运行一个容器,docker进程都会分配唯一的且未被其他容器占用的IP地址给容器,这个IP地址在桥接模式网络的子网中

3容器和主机通信:通过桥接模式,容器可以与主机直接通信,容器可以访问主机上的运行服务,主机也可以通过桥接网络docker0来访问容器内部的进程(实际上这个过程是在主机上做了iptables的nat地址转换)

问题:docker的网桥是宿主机虚拟出来的,并不是一个真正存在的网络设备,外部网络无法寻址找到(外部网络无法直接访问docker0分配给容器的IP地址)

解决:可以给容器做端口映射

①随机分配端口和宿主机映射-P

docker run -itd --name test1 -P nginx:1.22.0 /bin/bash

-P:在创建容器时,在宿主机和容器之间做一个端口映射,-P随机分配一个端口给宿主机,容器的端口是不变的。随机分配的端口号从32768开始。进入容器开启一下服务。实际上,docker是在宿主机和容器之间做了一个iptables的nat地址转换,用宿主机的32768端口映射80端口

问题:浏览器无法访问映射的端口

原因:没有打开转发功能

解决:打开转发功能

sysctl net.ipv4.ip_forward

echo 1 > /proc/sys/net/ipv4/ip_forward

②指定端口号和宿主机映射-p

-p:指定端口,人为设置固定的端口映射

③指定端口号和宿主机一一映射

4、docker的网络模式【面试题】

创建容器时指定网络模式

--network host

(1)bridge模式(桥接模式):默认模式,在创建docker时不需要指定网络类型

(2)host模式(共用模式):容器不会虚拟出自己的网卡,也没有自己的IP地址,全部使用宿主机的IP地址和端口。如果是单个容器运行,可以使用host模式(宿主机和容器共用一个IP地址和端口)

(3)container模式:容器和容器之间共用一个IP和端口(两个端口不能同时起来)

(4)none模式:docker容器有自己的network-space,但是容器没有任何网络设置,这个容器没有网卡,没有IP地址,没有路由,只有lo回环网络,在none模式下容器不可以联网(一般用于容器功能测试)

(5)自定义网络:给docker创建一个自己定义的网段(基于bridge模式创建自定义网络)

NETWORK ID

docker网络唯一的网络ID

NAME

docker网络的名称

DRIVER

docker网络的驱动程序

SCOPE

docker网络的作用范围

创建容器时无法指定IP地址

在使用默认docker:0的网桥时,创建容器时不能指定IP地址的,只能由docker网桥自动分配,除非用户自定义的网络才能给容器分配IP地址

创建自定义IP地址

①创建网段

docker network create --subnet=172.18.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork

--opt "com.docker.network.bridge.name"="docker1"可以不加,但是网卡名称难以识别

mynetwork自定义网段的名称

②指定IP地址

4、查看容器日志

docker logs 容器名称/ID(不是实时查看,查看所有)

docker logs -f (从尾部看)

docker logs --tail=10 test1(固定看10行)

docker logs --tail=10 -f test1(动态看最近的10行)

三、数据卷

容器如何与宿主机之间进行数据共享?

1、定义

数据卷是一个供容器使用的特殊的目录,在容器中,和宿主机的目录进行映射,主机和宿主机之间都可以对目录中的文件进行修改,双方同步生效,对镜像也没有影响,可以实现宿主机到容器之间的数据迁移

2、数据共享(映射关系)

(1)宿主机和容器之间实现数据共享

①创建容器的挂载卷(自动创建目录)

/opt/yyy在宿主机中;/opt/sss在容器中

结论:创建挂在卷,宿主机和容器中的数据可互相同步更新

②创建容器中的目录为只读模式

ro:read only

结论:创建容器时设置为只读模式后,容器内部只能读,不能写,能同步到来自宿主机的数据文件

(2)容器和容器之间实现数据共享(数据卷容器)

数据卷容器:只提供挂载点,让另一方收集数据

test1、test2可以有一个或多个映射目录,实现数据互传,数据同步

在test1容器中的挂载目录下分别创建

挂载目录

文件

内容

sss

sss.txt

sss1

yyy

yyy.txt

yyy1

结论:容器之间实现数据共享

3、容器互联:两个容器之间实现网络通信

新版本方法:基于自定义网络实现网段互联

创建网段172.20.0.0/16

结论:在同一网段中,互相可以ping通

4、部署mysql镜像,创建一个mysql容器,用navicat可以直接访问容器的mysql 33066:3306;创建一个数据卷,宿主机可以看到容器内的mysql的日志文件

拉取mysql5.7

创建容器mysql

进入容器并登录mysql,给root用户赋权

查看mysql日志状态

编辑配置文件开启binlog,设置log文件

导出mysql 的配置文件

编辑mysqld.cnf文件

导入mysql 的配置文件

chmod 777 /var/log/mysql

查看mysql 日志

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

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

相关文章

C++11:lambda表达式(对各个参数详细说明+注意事项+使用案例+探究底层)

目录 一、lambda表达式语法 1.lambda表达式书写格式 2. lambda表达式各部分说明 3.捕获列表说明 二、lambda表达式的一些使用案列 1.借助auto将lambda表达式赋值给一个变量来直接调用。 2.对于类似于sort对自定义类型排序等情况时使用lambda可简化代码 以前我们对自定义…

【SpringBoot】yml配置文件注释中文乱码

错误展示 搭了一个环境,一启动项目,yml文件中文全乱码了 解决措施 按如图顺序操作 结果 再次启动项目,乱码已解决!

Spring IoC和DI

目录 一. Spring是什么 IoC DI 二. IoC&DI的使用 IoC 1.Controller(控制器存储) 2.Service(服务存储) 3.Repository(仓库存储) 4.Componemt(组件存储) 5.Configuratio…

JavaSE基础50题:8. 获取一个数二进制序列中所有的偶数和奇数位,分别输出二进制序列。

概述 获取一个数二进制序列中所有的偶数和奇数位,分别输出二进制序列。 如:从右往左数 0111(如图) 偶数位:01 奇数位:11 代码 public static void main(String[] args) {Scanner scanner new Scanner(Sys…

c++ - 警告 : treating ‘c-header‘ input as ‘c++-header‘ when in C++ mode, 此行为已弃用

一、问题出现 在进行多文件编译的时候报错 二、原因 我们多文件编译的时候加了头文件 三、解决办法 去掉头文件,只编译源文件

第二十一章总结。。

计算机网络实现了堕胎计算机间的互联,使得它们彼此之间能够进行数据交流。网络应用程序就是再已连接的不同计算机上运行的程序,这些程序借助于网络协议,相互之间可以交换数据,编写网络应用程序前,首先必须明确网络协议…

JAVA调优

1 JAVA虚拟机 1.1 基本组成 通常来说Java平台标准版(Java SE)包括 Java SE开发工具包(JDK)和Java SE运行时环境(JRE)。 JRE提供了运行以Java编程语言编写的applet和应用程序所必需的库,Java虚…

(Gemini)双子座:一系列高能力多模态模型的前世今生

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

urllib 的 get 请求和 post 请求(二)

目录 一、爬取网页、图片视频 二、请求对象的定制 三、get请求的urlencode方法 四、post 请求英文翻译 一、爬取网页、图片视频 目标:下载数据 知识点:urllib.request.urlretrieve()下载 使用urllib下载网页、图片和视频 下载网页: #…

Livox_ros_driver2 消息 (msg) 类型对 SLAM 应用程序的适配

Title: Livox_ros_driver2 消息 (msg) 类型对 SLAM 应用程序的适配 文章目录 I 前言II. 查看 ROS 消息III. Livox ROS 驱动的消息类型IV. 适配修改应用程序V. 总结 I 前言 有时候, 拿到最新的 Livox 激光传感器, 比如 HAP, 原厂也提供了 ROS 驱动支持 livox_ros_drivers2 (htt…

Docker的数据卷

数据卷 1.数据卷概述 数据卷:容器与宿主机之间数据共享。 数据卷是一个供容器使用的特殊目录,位于容器中。 可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿…

Spring基于注解存储对象

小王学习录 前言基于注解存储对象Controller (控制器存储)Service (服务存储)Repository (仓库存储)Component (组件存储)Configuration (配置存储)Bean(方法注解) 前言 上一篇文章中已经介绍了在Spring中存储Bean和取Bean的方法. 而在 Spring 中想要更简单的存储和读取对象的…