06_docker 网络类型

发布于:2025-04-04 ⋅ 阅读:(16) ⋅ 点赞:(0)

    当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连接在了一个二层网络中。 

docker网络类型(包括不限于):bridge(桥接网络)、host(主机网络)、none(封闭网络)

查看docker默认网络

docker network ls

1.docker bridge网络(常用)

   这是 Docker 默认的网络类型。当你创建一个容器时,如果不特别指定网络,它就会连接到默认的桥接网络上。可以把桥接网络想象成一个虚拟交换机

(1)修改docker网络默认的网段

vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://w1uieoaw.mirror.aliyuncs.com"],
  "bip": "192.168.200.1/24"    
}

#重启docker

systemctl restart docker

#查看ip网段

2bridge网络的容器访问外部网络端口映射

在创建容器的时候可以指定这个容器的端口与主机端口的映射关系(端口映射):

-P(大写): #该参数会分配镜像中所有的会使用的端口,并映射到主机上的随机端口

-p:  #可以指定主机与容器的端口关系,冒号左边是主机端口,右边是映射到容器端口

#创建容器时映射端口

命令格式:docker run -id --name容器名 -P -p 宿主机端口:容器端口 镜像名

docker run -id --name nginx-1.26 -P -p 422:22 nginx:1.26.1

#查看容器端口映射

docker port nginx-1.26

2.docker host网络

     使用host网络的主机,与宿主机共享网络地址,可以获得最好的数据转发性能。缺点是,同一个宿主机上的多个容器共享同一个ip地址,如果多容器使用相同的端口,需要自行解决端口冲突问题。

1使用host网络

选项参数:

--net   #指认要使用的网络,包含bridge、host、none

docker run -id --name mysql-5.7 --net host mysql:5.7

(2)查看容器网络

docker exec -it mysql-5.7 ifconfig

###可以看到容易设置为host网络之后,将直接共享宿主机的所有网卡

3.docker none网络(使用较少)

   故名思议,none网络就是什么都没有的网络。使用none网络的容器除了lo,没有其他任何网卡,完全隔离。用于既不需要访问外部服务,也不允许外部服务访问自己的应用场景。

#创建容器时指定网络

选项参数:

--net   #指认要使用的网络,包含bridge、host、none

docker run -id --name centos7 --net none centos