Docker 网络

桥接模式

用于连接两个不同网段的设备,共享通信的一种方式

桥接设备

工作在osi模型额度第二层,数据链路层,转发数据帧,Mac地址

类似于交换机,只能转发同一网段,通过泛洪广播来找目标设备的Mac地址

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

1、虚拟网络桥 安装开启docker之后,docker进程就会自动创建一个虚拟网络桥(docker0),是一个虚拟的网络设备,类似于物理网络设备的交换机

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

3、容器和主机通信,通过桥接模式,容器可以与主机直接通信,容器可以访问主机的运行服务,主机可以通过桥接网络docker0

,来访问容器内部的进程(iptables的nat地址转换,咋主机上做了地址转换)

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

宿主机和主机之间的映射
复制代码
docker run -itd --name test1 -P nginx:1.22.0 /bin/bash
-p:在创建容器时,在宿主机和容器做了一个端口映射,-P随机分配一个端口给宿主机,容器的端口哦是不变的 
---P 32768  开始
-P	随机指定
-p	指定端口,热为设置固定的端口映射 
进入容器开启一下服务
实际上,docker是在宿主机和容器之间做了一个iptables的NAt地址转换

在虚拟机上访问

查看容器的输出和日志信息(创建容器时,不要加bin/bash)

查看docker网络列表
复制代码
NAME: 是Docker网络的名称。在这里,你列出了三个网络,它们的名称分别是bridge、host和none。

NETWORK ID: 每个Docker网络都有一个唯一的网络ID。

DRIVER: 这是Docker使用的网络驱动程序。在这里,bridge表示使用的是桥接网络,host表示使用的是主机网络,而none表示没有网络。

SCOPE: 表示网络的作用范围。local表示该网络仅在本地主机上可用。
docker的网络模式

1、bridge默认,在创建docker时,不需要指定网络类型,默认就是bridge

2、host模式:容器将不会虚拟出自己的网卡,也没有自己的地址

复制代码
#创建容器的时候可以指定网络模式:--network host
#公用模式,如果单个运行,可以使用host

docker run -itd --name test4 --network host nginx /bin/bash

3、container模式:容器和容器之间共用一个ip和端口

4、none模式:docker容器有自己的network-space但是容器没有任何网络设置

这个容器没有网卡,没有ip,没有路由,只有lo回环网络,在none模式下,容器不可以联网,用于容器功能测试

复制代码
docker run -itd --name test2 --network=none nginx /bin/bash

5、自定义网络:我们可以给创建一个自己定义网段

复制代码
ocker run -itd --name nginx1 --network bridge --ip 172.17.0.10 nginx:latest /bin/bash
#在使用默认docker:0网桥时,创建容器是不能指定ip地址的,只能由docker网桥自动分配
#除非用户自定义的网络才可以给容器自定义IP地址
如何自定义创建网络
docker network create --subnet=172.18.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork
docker network create	创建网络
subnet=172.18.0.0/16	指定网段
--opt "com.docker.network.bridge.name"="docker1"  可以不加,但是网卡名称比较难以识别
mynetwork 	自定义网络名称
docker run -itd --name nginx1 --network mynetwork --ip 172.18.0.10 nginx:latest /bin/bash

访问172.18.0.10(在虚拟机访问)

相关推荐
河南博为智能科技有限公司16 小时前
动环监控终端-守护变电站安全运行的智能核心
运维·服务器·网络·物联网
无心水16 小时前
【Python实战进阶】5、Python字符串终极指南:从基础到高性能处理的完整秘籍
开发语言·网络·python·字符串·unicode·python实战进阶·python工业化实战进阶
热爱学习的小怪兽16 小时前
Docker容器的一些总结
运维·docker·容器
Top`16 小时前
两个服务之间传递的数据本质上是字节码(Byte Stream)
网络
❀͜͡傀儡师17 小时前
Docker一键部署Nexus Terminal,高颜值SSH新体验
docker·容器·ssh
dyxal17 小时前
非对称加密:彻底解决密钥分发难题的数字安全革命
服务器·网络·安全
TH_118 小时前
腾讯云-(10)-宝塔面板-Docker下安装Elasticsearch
elasticsearch·docker·容器
少云清19 小时前
【功能测试】4_Web端抓包 _网络知识
网络·功能测试·抓包
面对疾风叭!哈撒给19 小时前
Docker之 Portainer、Node-RED和EMQX安装与配置
运维·docker·容器
kbirdg19 小时前
告别卡顿!内网服务器如何“优雅”地搬运 Docker 镜像?除了 docker save,你该试试这几招
docker