Docker如何固定IP设置的方法

http://www.kaotop.com/it/180973.html

由于工作需要,需要给Docker设置固定IP,在网上的查找了一些资料,自己试着实践一下,留个笔记。

经常用Docker模拟项目在生产环境中的部署,往往需要同时开好几台Docker容器,而且有时安装的软件需要绑定Docker局域网中的其他容器,如 MongoDB 副本集部署的时候,就需要绑定其他容器的内网IP。

但是,Docker 每次重启后,容器的IP地址会变化,查询了资料,Docker是支持设置固定IP的。

Docker 默认网络

Docker安装后,默认会创建下面三种网络类型:

1 $ docker network ls 2 NETWORK ID NAME DRIVERSCOPE 3 9781b1f585ae bridgebridgelocal 4 1252da701e55 host host local 5 237ea3d5cfbf none null local

启动 Docker的时候,用 --network 参数,可以指定网络类型,如:

1 ~ docker run -itd --name test1 --network bridge --ip 172.17.0.10 centos: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的,如下:

1 ~ docker run -itd --net bridge --ip 172.17.0.10 centos:latest /bin/bash 2 6eb1f228cf308d1c60db30093c126acbfd0cb21d76cb448c678bab0f1a7c0df6 3 docker: Error response from daemon: User specified IP address is supported on user defined networks only.

因此,需要创建自定义网络,下面是具体的步骤:

步骤1: 创建自定义网络

创建自定义网络,并且指定网段:172.18.0.0/16

1 ➜ ~ docker network create --subnet=172.18.0.0/16 mynetwork 2 ➜ ~ docker network ls 3 NETWORK ID NAME DRIVERSCOPE 4 9781b1f585ae bridgebridgelocal 5 1252da701e55 host host local 6 4f11ae9c85de mynetwork bridgelocal 7 237ea3d5cfbf none null local

步骤2: 创建Docker容器

复制代码 代码如下:
➜  ~ docker run -itd --name networkTest1 --net mynetwork --ip 172.18.0.2 centos:latest /bin/bash

这个时候,创建的Docker容器就会持有 172.18.0.2 这个IP.

1 [root@ec8e31938fe7 /]# ifconfig 2 eth0 link encap:Ethernet HWaddr 02:42:AC:12:00:02 3 inet addr:172.18.0.2 Bcast:0.0.0.0 Mask:255.255.0.0 4 inet6 addr: fe80::42:acff:fe12:2/64 Scope:link 5 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 6 RX packets:88 errors:0 dropped:0 overruns:0 frame:0 7 TX packets:14 errors:0 dropped:0 overruns:0 carrier:0 8 collisions:0 txqueuelen:0 9 RX bytes:4056 (3.9 KiB) TX bytes:1068 (1.0 KiB) 10 11 lo link encap:Local Loopback 12 inet addr:127.0.0.1 Mask:255.0.0.0 13 inet6 addr: ::1/128 Scope:Host 14 UP LOOPBACK RUNNING MTU:65536 Metric:1 15 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 16 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 17 collisions:0 txqueuelen:1 18 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

__EOF__

本文作者忧伤恋上了快乐
本文链接https://www.cnblogs.com/x666-6/p/16876858.html
关于博主:编程小萌新一名,希望从今天开始慢慢提高,一步步走向技术的高峰!
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   忧伤恋上了快乐  阅读(863)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示