docker安装后,默认会创建三种网络类型,bridge、host和none,可通过如下命令查看

sudo docker network ls
  • bridge:网络桥接
    默认情况下启动、创建容器都是用该模式,所以每次docker容器重启时会按照顺序获取对应ip地址,这就导致容器每次重启,ip都发生变化
  • none:无指定网络
    启动容器时,可以通过–network=none,docker容器不会分配局域网ip
  • host:主机网络
    docker容器的网络会附属在主机上,两者是互通的

创建一个有固定IP的容器方法如下:

创建一个子网(SubNet),并指定网段

#语法格式:
docker network create --subnet=[网段] [子网名称]
#示例
sudo docker network create --subnet=192.168.0.0/16 mysubnet

关于网段划分的相关知识:

https://www.hash070.top/archives/ip-and-subnet.html

启动容器时指定子网

例如启动一个unbutu容器,使用–net 来指定子网,使用–ip 来指定容器IP,ip的范围要在该子网的范围内。

sudo docker run -it --name userserver --net mysubnet --ip 192.168.0.2 ubuntu /bin/bash

Q.E.D.