docker网络

网络模式:

bridge:docker默认

自己创建会默认使用bridge模式 类似vmware中的NAT模式

其中192.168.1.203是本机在现实世界局域网的ip、172.17.0.1是本机作为bridge模式的网关在docker中的ip,172.17.0.2、172.17.0.3、172.17.0.4这三个ip是三个容器对应的ip

none:不配置网络

此时容器只有本地回环网络 没有网卡、IP、路由等信息

host:和宿主机共享网络

如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。

container:容器网络连通!(用的很少)

自定义网络

# driver是bridge模式(默认)    --subnet 是设置子网  --gateway 配置网关(例如docker0)
beginner@beginner-virtual-machine:~$ docker network create --driver bridge --subnet 111.111.0.0/24 --gateway 111.111.0.1 mynet
7c806260fc5f2827fa1b6698c9b704c31b77730c3d86b94c54cccc18d84530c3 # 现在本地网络中就多路mynet这个网络 驱动是bridge
# 官方自带三个 网络 bridge host none 前两个与驱动重名注意区分
beginner@beginner-virtual-machine:~$ docker network ls
NETWORK ID NAME DRIVER SCOPE
172e6878311f bridge bridge local
264f73f29c24 desktop_redis_net bridge local
700a25830a95 host host local
7c806260fc5f mynet bridge local
de08c55033d0 none null local # 现在即可使用自定义的网络
beginner@beginner-virtual-machine:~$ docker run -d -it --name xxxxx --net mynet 镜像id

在命令中查看,加深理解

  • 显示docker的网络情况与本机的网卡情况
#显示本机的所有网络
beginner@beginner-virtual-machine:~$ docker network ls
NETWORK ID NAME DRIVER SCOPE
172e6878311f bridge bridge local
264f73f29c24 desktop_redis_net bridge local #自定义网络
700a25830a95 host host local
de08c55033d0 none null local beginner@beginner-virtual-machine:~$ ifconfig
#一个主机可以有多个ip
#这是自定义网络desktop_redis_net本机对应的ip 本机作为网关与同网段的主机通信
br-264f73f29c24: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.2.1 netmask 255.255.255.0 broadcast 192.168.2.255
ether 02:42:cd:cb:3b:8d txqueuelen 0 (以太网)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 系统自带的bridge网络 本机对应的ip
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:46ff:fec8:d331 prefixlen 64 scopeid 0x20<link>
ether 02:42:46:c8:d3:31 txqueuelen 0 (以太网)
RX packets 51291 bytes 3642933 (3.6 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 77991 bytes 154775800 (154.7 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 # 本机在现实局域网中的地址
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.106 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::3c6c:1530:5c72:d562 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:2b:90:45 txqueuelen 1000 (以太网)
RX packets 484838 bytes 671416037 (671.4 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 163810 bytes 12705677 (12.7 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 回环地址127.0.0.1
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (本地环回)
RX packets 1895 bytes 166608 (166.6 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1895 bytes 166608 (166.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 #下面两个是两个容器的ip
veth7cab0bc: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::10a7:e6ff:feb0:3f4b prefixlen 64 scopeid 0x20<link>
ether 12:a7:e6:b0:3f:4b txqueuelen 0 (以太网)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 53 bytes 5652 (5.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 vetha887cda: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::e881:92ff:fed7:8261 prefixlen 64 scopeid 0x20<link>
ether ea:81:92:d7:82:61 txqueuelen 0 (以太网)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 58 bytes 6176 (6.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  • 查看运行中的容器发现均在名bridge的网络下
beginner@beginner-virtual-machine:~$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b42d286b72af 5cc8c "python3" 5 hours ago Up 5 hours dreamy_rubin
5cc1beeff39b tomcat:latest "catalina.sh run" 6 hours ago Up 6 hours 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp clever_goldberg beginner@beginner-virtual-machine:~$ docker network inspect bridge
#下面显示在bridge网络下的主机
"Containers": {
"5cc1beeff39b8b249b4329ff9319737062693f7b3817eedd8b9d757498cc42b1": {
"Name": "clever_goldberg",
"EndpointID": "e971452f34c6330897e0b877cba2151e1d8b5141bff4a3b19754b7346f42c098",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
},
"b42d286b72af73b006819b28b11e235677d87f47ee2c19c6cfaec78d030cda09": {
"Name": "dreamy_rubin",
"EndpointID": "08a4acef8b848e2276206a5c3f787d3fe10377ae363c65569a72e72f7ee14420",
"MacAddress": "02:42:ac:11:00:03",
"IPv4Address": "172.17.0.3/16",
"IPv6Address": ""
}

docker基础_网络模式的更多相关文章

  1. [转帖]Docker四种网络模式

    Docker(十四)-Docker四种网络模式 https://www.cnblogs.com/zhuochong/p/10069293.html 计算机网络相关的知识 非常有用.. Docker 安 ...

  2. Docker 四种网络模式

    原文 https://www.cnblogs.com/gispathfinder/p/5871043.html 我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络 ...

  3. Docker学习第四天(Docker四种网络模式)

    Docker四种网络模式 实现原理 Docker使用Linux桥接(参考<Linux虚拟网络技术>),在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根 ...

  4. Docker(十四)-Docker四种网络模式

    Docker 安装时会自动在 host 上创建三个网络,我们可用 docker network ls 命令查看: none模式,使用--net=none指定,该模式关闭了容器的网络功能. host模式 ...

  5. Docker笔记03-docker 网络模式

    docker网络模式分为5种 Nat (Network Address Translation) Host other container none overlay 第一种 Nat模式 docker的 ...

  6. Docker——四种网络模式

    docker run创建Docker容器时,可以用–net选项指定容器的网络模式,Docker有以下4种网络模式:  bridge模式:使用–net =bridge指定,默认设置:  host模式 ...

  7. docker四种网络模式

    1,host模式 启动容器时,添加参数--net=host 此模式和宿主机使用的是同1个ip,适合上网. 2,container模式 启动容器时,添加参数--net=container,docker ...

  8. docker基础——4.网络待补

    docker network ls bridge:NAT桥 host:共用宿主机namespace的UTS.IPC.Network none:只有lo,没有网卡 其他待补

  9. docker基础_数据卷

    docker数据卷 为什么要使用数据卷 如果数据都在容器中,那么容器一旦删除,数据就会丢失!docker容器需要将产生的数据同步到本地.容器与容器之间也需要有一个数据共享的技术 将某些文件共享.这就是 ...

随机推荐

  1. redis哨兵功能

    redis哨兵功能 redis-Sentinel(哨兵) 前言 当用redis作master-slave的高可用时,如果master本身宕机,redis本身或者客户都没有实现主从切换的功能 redis ...

  2. Azure DevOps (七) 通过SSH部署上传到服务器的应用

    上一篇中,我们实现了通过FTP把流水线编译出来的制品上传到我们的公网服务器上,这一篇我们来研究一下通过azure的ssh连接到服务器 把应用在服务器上运行起来. 首先,我们书接上文,在release流 ...

  3. Rust极简教程

    目录 简介 特性 特征 用途 安装 核心组件 常用命令 基础语法 数据类型 标量类型 复合类型 示例 条件语句 循环 输出&输入 输出 输出花括号 输出非基础类型 输入 所有权 切片 结构体 ...

  4. 《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程)

    1.简介 其实前边好像简单的提到过测试报告,宏哥觉得这部分比较重要,就着重讲解和介绍一下.报告是任何测试执行中最重要的部分,因为它可以帮助用户了解测试执行的结果.失败点和失败原因.另一方面,日志记录对 ...

  5. eclipse启动指定jvm的版本

    参阅:https://www.eclipse.org/forums/index.php/t/1105435/ https://wiki.eclipse.org/Eclipse.ini#-vm_valu ...

  6. RabbitMQ 的集群?

    镜像集群模式 你创建的 queue,无论元数据还是 queue 里的消息都会存在于多个实例上,然后每次你写消息到 queue 的时候,都会自动把消息到多个实例的 queue 里进行消息同步. 好处在于 ...

  7. 三、MyCat主要配置介绍

    一.配置文件 1.server.xml Mycat的配置文件,设置账号.参数等2.schema.xml Mycat对应的物理数据库和数据库表的配置3.rule.xml Mycat分片(分库分表)规则 ...

  8. Spring IoC 的实现机制?

    Spring 中的 IoC 的实现原理就是工厂模式加反射机制. 示例: interface Fruit { public abstract void eat(); } class Apple impl ...

  9. Clickhouse 用户自定义外部函数

    写在前面 Clickhouse 从 21.11 版本开始,除了提供类似SqlServer.MySQL CREATE FUNCTION 的自定义函数之外,还有一个用户自定义函数(UDF),与其说是&qu ...

  10. 《自动控制原理》个人笔记(来自ppt课件)

    控制的含义 控制(CONTROL)----某个主体使某个客体按照一定的目的动作.主体–人:人工控制: 机器:自动控制客体–指一件物体,一套装置,一个物化过程,一个特定系统. 人工控制与自动控制 人在控 ...