前言

默认情况下使用docker run -itd --name [容器名称] [镜像名称/id]指令启动容器,ip是自动分配的,一旦容器重启,ip就会重新被分配,这样就会造成ip频繁变化,因此需要在启动的时候指定固定ip

1、查了容器网络类型,打开cmd,输入以下指令
docker network ls

一般情况下,默认会有三种网络类型,windows容器,所以如下图三种,但是linux容器是bridge,none,host三种(windows容器不支持)

windows docker 局域网 windows docker 网络_docker


创建一个网络类型

docker network create --subnet=172.18.0.0/16 -d nat mynet
# 或者
docker network create --subnet=172.18.0.0/16 -d ics mynet

语法说明

docker network create --subnet=172.18.0.0/16 -d [默认网络类型名称] [自定义网络名称]
  • 172.18.0.0/16:中16表示二进制掩码16个1:11111111.11111111.0000000.0000000,转换成十进制的掩码是255.255.0.0,不知道docker网关ip的可以继续往下看有详细说明
2、判断docker容器默认使用的是哪种网络类型方法一(推荐,虽然麻烦,但是准确)

由于这个不好判断,所以建议先随便启动一个docker 容器,然后查询详细信息,就可以知道了,我这里先安装一个nginx做测试(你可以安装任何容器测试)

(1)拉取镜像,启动容器
docker pull nginx
docker run --name nginx -d nginx
(2)查看容器信息,获取默认网络类型和网关ip
docker inspect nginx

windows docker 局域网 windows docker 网络_windows docker 局域网_02

(3)移除nignx容器,重新新建(启动)一个容器,我还是以nginx为例,所以我要先删除现有的容器
# 停止容器
docker stop nginx

#删除容器
docker rm nginx

# 新建(启动)容器
docker run --name nginx --network mynet --ip 172.18.106.12 -d nginx

语法说明:

docker run -itd --name [容器名称] --network [自定义网络模式] --ip [指定的固定IP地址] [镜像名称/id]

说明:固定IP是根据容器网关ip来指定的,比如容器网关IP为:172.18.69.1,那么我就会把容器的固定IP设置为以172.18开头,如172.18.106.12,根据个人喜好设置为任意ip,但是注意,容器与容器之间ip不能重复

(4)查看是否设置成功
docker inspect nginx

不出错的话,下图中就是咱设置的固定ip,而且,现在重启容器之后,IP不会发生变化。

windows docker 局域网 windows docker 网络_网络类型_03

3、判断docker 容器使用哪种网络模式和网关ip,方法二

打开网络连接,如图可知docker默认网络类型,我的计算机网络情况如下,你的可能有所区别,下图仅供参考

windows docker 局域网 windows docker 网络_windows docker 局域网_04


打开cmd,输入ipconfig

windows docker 局域网 windows docker 网络_nginx_05

写在最后

通过多次尝试,发现windows docker 容器在计算机重启之后,网络类型会被重置,也就是重启之后,自定义网络会被自动清除,除非不重启计算机,否则目前无法做到真正的固定ip,当然,如果切换到linux容器之后,一切就会解决,请看01-04 查看linux docker容器网络类型,并设置固定IP

切换到linux容器:单击如图docker图标–>switch to linux containers…

windows docker 局域网 windows docker 网络_windows docker 局域网_06


接下来就是等待,切换成功之后,你会发现setting与windows容器有所变化

windows docker 局域网 windows docker 网络_nginx_07