docker网络【重点】

news2024/11/24 11:32:00

一、网络知识

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

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

相关文章

验证码的多种生成策略

&#x1f60a; 作者&#xff1a; 瓶盖子io &#x1f496; 主页&#xff1a; 瓶盖子io-CSDN博客 第一种 a.导入依赖 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.10</ver…

初始化 Clouder Manager 数据库报错Unable to find JDBC driver for database type: MySQL

CDH部署初始化 Clouder Manager 数据库报错。 解决方法&#xff1a; 把mysql驱动放到 /usr/share/java/目录下面(没有的新建&#xff09;&#xff0c;驱动名称也要修改为mysql-connector-java.jar 再次执行后成功&#xff1a; sudo /opt/cloudera/cm/schema/scm_prepare_data…

刷机操作小记

步骤&#xff1a; 一.刷机 1.先找到刷机包中的刷机命令&#xff0c;然后用sudo的权限对其执行。 2.之后 先短接&#xff0c;再插USB 短接具体图片如下&#xff08;焊口和大板子&#xff09; 此时等待刷机程序执行完毕就可以完成刷机了。 &#xff08;./fh.sh&#xff09; …

C# Solidworks二次开发:三种获取SW设计结构树的方法-第一讲

今天要讲的方法是如何在Solidworks中获取左侧设计结构上的节点&#xff0c;获取节点的方法我所知道的有三种。 这三种方法满足我在使用过程的多种需求&#xff0c;下面先开始介绍第一个方法&#xff1a; 方法的API如下所示&#xff1a;GetComponents Method (IAssemblyDoc) 这…

SwiftUI 中创建一个自定义文件管理器只需4步!你敢信!?

概览 在 SwiftUI 中写一个自定义文件内容的管理器有多难呢&#xff1f; 答案可能超乎小伙伴们的想象&#xff1a;仅需4步&#xff01;可谓是超级简单&#xff01; 在本篇博文中&#xff0c;您将学到如下内容&#xff1a; 概览1. 第一步&#xff1a;定义文件类型2. 第二步&…

Java毕业设计源码—vue+SpringBoot图书借阅管理图书馆管理系统

主要技术 SpringBoot、Mybatis-Plus、MySQL、Vue3、ElementPlus等 主要功能 管理员模块&#xff1a;注册、登录、书籍管理、读者管理、借阅管理、借阅状态、修改个人信息、修改密码 读者模块&#xff1a;注册、登录、查询图书信息、借阅和归还图书、查看个人借阅记录、修改…

记1次nacos拉取不到配置问题

今天部署1套新的环境&#xff0c;nacos由运维部署完成&#xff0c;提供了3个端口 30820 31558 32239 启动的时候提示 [Nacos Config] config[dataIdredis.yml, groupDEFAULT_GROUP] is empty 我再三确认页面上确实已经配置好了 于是开启debug -401 Client not connected, c…

ubuntu18.04 vscode 安装 vue.volar Vue Language Features (Volar) , vue3 必备插件

直接在vscode 里面下载老是失败&#xff0c;不是网络问题&#xff0c;而是vue.volar插件配置的vscode版本与vscode版本不一致导致出现安装失败 官网下载最新的 vue.volar插件 https://marketplace.visualstudio.com/ 官网搜索 vue.volar 然后打开 Vue Language Features (Vol…

class036 二叉树高频题目-上-不含树型dp【算法】

class036 二叉树高频题目-上-不含树型dp code1 102. 二叉树的层序遍历 // 二叉树的层序遍历 // 测试链接 : https://leetcode.cn/problems/binary-tree-level-order-traversal/ code1 普通bfs code2 一次操作一层 package class036;import java.util.ArrayList; import java…

亿发专业MES制造系统,现代化MES精益制造管理,建设数字化车间

在制造业信息化进程中&#xff0c;车间级信息化一直是薄弱环节&#xff0c;要提升车间自动化水平&#xff0c;可以发展MES技术。 MES&#xff08;制造执行系统&#xff09;强调对车间级的过程进行全面的集成、控制和监控&#xff0c;同时要合理配置和组织所有资源&#xff0c;以…

<软考>软件设计师-3程序设计语言基础(总结)

(一) 程序设计语言概述 1 程序设计语言的基本概念 1-1 程序设计语言的目的 程序设计语言是为了书写计算机程序而人为设计的符号语言&#xff0c;用于对计算过程进行描述、组织和推导。 1-2 程序语言分类 低级语言 : 机器语言&#xff08;计算机硬件只能识别0和1的指令序列)&…

第二十一章总结。。

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

同旺科技 USB TO RS-485 定制款适配器--- 拆解(四)

内附链接 1、USB TO RS-485 定制款适配器 ● 支持USB 2.0/3.0接口&#xff0c;并兼容USB 1.1接口&#xff1b; ● 支持USB总线供电&#xff1b; ● 支持Windows系统驱动&#xff0c;包含WIN10 / WIN11系统32 / 64位&#xff1b; ● 支持Windows RT、Linux、Mac OS X、Windo…

【爬取音乐,并将音乐信息储存到数据库中】

爬取音乐,并将音乐信息储存到数据库中 确定音乐网站的url并分析网站分析二级页面创建数据库使用Xpath解析&#xff0c;进行多层爬取保存信息完整代码结果 确定音乐网站的url并分析网站 分析二级页面 创建数据库 # 创建一个链接对象 conn pymysql.connect(hostmaster, userroo…

浅谈https

1.网络传输的安全性 http 协议&#xff1a;不安全&#xff0c;未加密https 协议&#xff1a;安全&#xff0c;对请求报文和响应报文做加密 2.对称加密与非对称加密 2.1 对称加密 特点&#xff1a; 加解密使用 相同 秘钥 高效&#xff0c;适用于大量数据的加密场景 算法公开&a…

C++——内部类

class A { public:class B//内部类{private:int _b;}; private:int _a; }; int main() {cout << sizeof(A) << endl;return 0; } 概念及特征&#xff1a; 如果一个类定义在另一个类的内部&#xff0c;这个类就叫内部类。注意此时这个内部类是一个独立的类&#x…

EarCMS 前台任意文件上传漏洞复现

0x01 产品简介 EarCMS是一个APP内测分发系统的平台。 0x02 漏洞概述 EarCMS前台put_upload.php中,存在pw参数硬编码问题,同时sql语句pdo使用错误,没有有效过滤sql语句,可以控制文件名和后缀,导致可以任意文件上传。 0x03 复现环境 FOFA:app="EearCMS" 0x0…

UEFI下Windows10和Ubuntu22.04双系统安装图解

目录 简介制作U盘启动盘并从U盘启动电脑安装系统安装Windows系统安装Ubuntu 附录双系统时间不一致 简介 传统 Legacy BIOS主板下的操作系统安装可参考本人博客 U盘系统盘制作与系统安装&#xff08;详细图解&#xff09; &#xff0c;本文介绍UEFI主板下的双系统安装&#xff…

JavaSE语法之五:数组的定义与使用(超详解!!!)

文章目录 一、数组的概念1. 什么是数组2. 数组的创建及初始化3. 数组的使用3.1 数组中元素的访问3.2 遍历数组 二、数组是引用类型1. 初始JVM的内存分布2. 基本类型变量与引用变量的区别3. 引用变量4. 认识null 三、数组的应用场景1. 保存数据2. 作为函数的参数2.1 参数传基本类…

【从零认识ECS云服务器 | 快速上线个人网站】阿里云手动搭建WordPress网站

第一步&#xff1a;部署 LAMP/LNMP 环境&#xff0c;需要在ECS实例中安装操作系统&#xff08;Linux&#xff0c;本例中使用的操作系统版本为CentOS 7.9 64位&#xff09;、Web服务器软件&#xff08;Apache/Nginx&#xff09;、数据库软件&#xff08;MySQL&#xff09;、网站…