前言
默认情况下使用docker run -itd --name [容器名称] [镜像名称/id]
指令启动容器,ip是自动分配的,一旦容器重启,ip就会重新被分配,这样就会造成ip频繁变化,因此需要在启动的时候指定固定ip
1、查了容器网络类型,打开cmd,输入以下指令
docker network ls
一般情况下,默认会有三种网络类型,windows容器,所以如下图三种,但是linux容器是bridge,none,host三种(windows容器不支持)
创建一个网络类型
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
(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不会发生变化。
3、判断docker 容器使用哪种网络模式和网关ip,方法二
打开网络连接,如图可知docker默认网络类型,我的计算机网络情况如下,你的可能有所区别,下图仅供参考
打开cmd,输入ipconfig
写在最后
通过多次尝试,发现windows docker 容器在计算机重启之后,网络类型会被重置,也就是重启之后,自定义网络会被自动清除,除非不重启计算机,否则目前无法做到真正的固定ip,当然,如果切换到linux容器之后,一切就会解决,请看01-04 查看linux docker容器网络类型,并设置固定IP
切换到linux容器:单击如图docker图标–>switch to linux containers…
接下来就是等待,切换成功之后,你会发现setting与windows容器有所变化