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地址转换。

指定一个端口

1,docker的网络模式:

bridge默认模式,在创建docker是不需要指定网络类型,默认就是bridge。

2,Host模式:容器将不会虚拟出自己的网卡,也没有自己的IP地址,全部使用宿主机的 IP地址和端口。

创建容器的时候可以指定网络模式:--network host

公用模式,如果是单个容器运行,可以使用host模式

3,container模式:容器和容器之间公用一个ip和端口。

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

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

,

5,自定义网络:我们可以给docker创建一个自定义网段。

docker网络_第1张图片

NETWORK ID :这个是docker网络唯一的网络id

NAME:docker网络的名称

DRIVER:docker网络的驱动程序

SCOPE:表示网络的作用范围

报错

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

docker网络_第2张图片创建自定义的IP地址172.18.0.10  在虚拟机访问。

Docker的网络模式:

  1. bridge 模式,桥接模式,也是docker的默认模式。在创建时无须指定。
  2. Host模式:容器不会有自己的网络设备,但是可以和宿主机共享ip和端口
  3. Container模式:容器和容器之间共享ip和端口
  4. None模式:也没有自己的网络设备,也没有网卡,ip。只有一个回环地址。127.0.0.1不能够联网的。飞行模式(测试容器的功能)
  5. 自定义网络:穿件容器时,默认使用docker网桥是无法给容器定义IP地址的,只能自动 分配。自定义网络在创建容器时,可以给容器指定IP地址。

Docker如何在创建容器时指定端口映射:

-P:随机指定

-p:自定义指定

32767:80 前面是宿主机,后面是容器端口。

Docker logs 容器名/容器id  有多少看多少

Docker logs -f 容器名/容器id

Docker logs --tail=10 -f test1  动态查看从尾部查看10条

docker网络_第3张图片

你可能感兴趣的:(docker,网络,容器)