1)docker网络常用命令
查看docker的网络模式
docker network ls
docker网络常用命令参数
connect #连接容器到网络
create #创建网络
disconnect #断开容器与网络的连接
inspect #显示一个或多个网络的详细信息
ls #列出所有网络
prune #删除所有未使用的网络
rm #移除一个或多个网络
2)docker网络主要用途
容器间的互联通讯以及端口映射
容器IP变动时可以通过服务名直接网络通信而不受影响
3)docker网络模式
网络模式 | 简介 |
bridge | 为每个容器分配、设置IP等,并将容器连接到一个 |
host | 容器将不会虚拟出自己的网卡,配置自己的IP,而是直接使用宿主机的IP和端口 |
none | 容器有独立的Network namespace,单并没有对其进行任何的网络设置。 |
container | 新创建的容器不会创建自己的网卡和配置自己的IP,而是和一个指定的容器共享IP与端口范围等 |
网络模式配置方法
bridge: #使用--network bridge指定,默认使用docker0
host:#使用--network host指定
none:#使用--network none指定
container:#使用--network container:NAME或者容器ID指定
(1)docker网络之bridge模式
Docker服务默认会创建一个docker0网桥,它在内核层连通了其他的物理或虚拟网卡,将所有容器和本地主机都放在同一个网络内。让主机和容器之间可以通过网桥互相通信。
docker0上面的veth与容器内部的eth0网卡两两配对,一 一匹配。
#创建实例
docker run -it --name r1 centos
docker run -it --name r2 centos
网卡两两匹配验证(如下图所示,容器内部网卡eth与宿主机的veth一 一匹配)
(2)docker网络之host模式
host模式下容器会直接使用宿主机的IP与外界进行通讯,不再需要额外进行NAT转换。
容器将不会获得一个独立的网络空间,而是和宿主机共用一个网络空间。容器不会虚拟出自己的网卡而是使用宿主机的IP和端口。
创建实例
#指定网络模式为host
docker run -itd --name host6 --network host centos:latest
在宿主机查看容器网络信息
docker inspect 容器ID或容器名
进入容器内部再次查看网络信息
docker exec -it host6 /bin/bash
host模式下与宿主机共用IP与端口
直接通过宿主机IP访问容器的80端口。
#安装httpd服务
yum install httpd -y
#写入内容
echo "this is docker-Apache" >/var/www/html/index.html
(3)docke网络的none模式
在none模式下,不为任何docker容器进行网络配置,并且只有一个本地回环口(127.0.0.1)。需要我们自己为Docker容器添加网卡,配置IP信息等。
#创建none模式下的容器
docker run -itd --name none1 --privileged --network none centos:latest /usr/sbin/init
进入容器内部查看网卡信息,只有一个本地回环口无其他任何网络信息。
(4)docker网络的container模式
新建的容器和已经存在的容易共享一个网络IP而不是和宿主机共享。并且新创建的容器不会创建自己的网卡,配置自己的IP而是和一个指定的容器共享IP、端口范围等。两个容器除了网络方面,其他都是隔离开的。
使用container模式让centos1与centos2容器共用一个IP
#创建centos1
docker run -d --name centos1 --privileged=true centos:latest /usr/sbin/init
#让cewntos2与centos1共享IP
docker run -d --name centos2 --network container:centos1 --privileged=true centos:latest /usr/sbin/init
查看两个容器的网络信息
标签:容器,--,简介,网络,网卡,IP,Docker,docker From: https://blog.51cto.com/qclr/7423811如果容器centos1停止运行,那么容器centos2的网络信息就会丢失只剩下本地回环口