Docker如何固定IP设置的方法
由于工作需要,需要给Docker设置固定IP,在网上的查找了一些资料,自己试着实践一下,留个笔记。
经常用Docker模拟项目在生产环境中的部署,往往需要同时开好几台Docker容器,而且有时安装的软件需要绑定Docker局域网中的其他容器,如MongoDB副本集部署的时候,就需要绑定其他容器的内网IP。
但是,Docker每次重启后,容器的IP地址会变化,查询了资料,Docker是支持设置固定IP的。
Docker默认网络
Docker安装后,默认会创建下面三种网络类型:
$dockernetworkls NETWORKIDNAMEDRIVERSCOPE 9781b1f585aebridgebridgelocal 1252da701e55hosthostlocal 237ea3d5cfbfnonenulllocal
启动Docker的时候,用--network参数,可以指定网络类型,如:
~dockerrun-itd--nametest1--networkbridge--ip172.17.0.10centos:latest/bin/bash
bridge:桥接网络
默认情况下启动的Docker容器,都是使用bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了
none:无指定网络
使用--network=none,docker容器就不会分配局域网的IP
host:主机网络
使用--network=host,此时,Docker容器的网络会附属在主机上,两者是互通的。
例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中。
创建自定义网络:(设置固定IP)
启动Docker容器的时候,使用默认的网络是不支持指派固定IP的,如下:
~dockerrun-itd--netbridge--ip172.17.0.10centos:latest/bin/bash 6eb1f228cf308d1c60db30093c126acbfd0cb21d76cb448c678bab0f1a7c0df6 docker:Errorresponsefromdaemon:UserspecifiedIPaddressissupportedonuserdefinednetworksonly.
因此,需要创建自定义网络,下面是具体的步骤:
步骤1:创建自定义网络
创建自定义网络,并且指定网段:172.18.0.0/16
➜~dockernetworkcreate--subnet=172.18.0.0/16mynetwork ➜~dockernetworkls NETWORKIDNAMEDRIVERSCOPE 9781b1f585aebridgebridgelocal 1252da701e55hosthostlocal 4f11ae9c85demynetworkbridgelocal 237ea3d5cfbfnonenulllocal
步骤2:创建Docker容器
➜ ~dockerrun-itd--namenetworkTest1--netmynetwork--ip172.18.0.2centos:latest/bin/bash
这个时候,创建的Docker容器就会持有172.18.0.2这个IP.
[root@ec8e31938fe7/]#ifconfig eth0Linkencap:EthernetHWaddr02:42:AC:12:00:02 inetaddr:172.18.0.2Bcast:0.0.0.0Mask:255.255.0.0 inet6addr:fe80::42:acff:fe12:2/64Scope:Link UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1 RXpackets:88errors:0dropped:0overruns:0frame:0 TXpackets:14errors:0dropped:0overruns:0carrier:0 collisions:0txqueuelen:0 RXbytes:4056(3.9KiB)TXbytes:1068(1.0KiB) loLinkencap:LocalLoopback inetaddr:127.0.0.1Mask:255.0.0.0 inet6addr:::1/128Scope:Host UPLOOPBACKRUNNINGMTU:65536Metric:1 RXpackets:0errors:0dropped:0overruns:0frame:0 TXpackets:0errors:0dropped:0overruns:0carrier:0 collisions:0txqueuelen:1 RXbytes:0(0.0b)TXbytes:0(0.0b)
链接
DockerContainerNetworking
为Docker容器指定自定义网段的固定IP/静态IP地址
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。