
如何静态化Docker容器的IP地址?构建网络实现容器固定IP
文章摘要
HeoGPT
这篇文章介绍了如何在使用 docker-compose 部署的环境中为容器设置固定的 IP 地址,以解决容器在重启后因 IP 自动变化导致无法上网的问题。文章首先创建了一个名为 heo_global_network 的自定义桥接网络,并将其 IP 地址段设置为 172.168.0.0/16。然后修改 docker-compose 文件,将容器连接到该外部网络并指定静态 IPv4 地址。通过这些步骤,用户可以确保容器在网络重启后保持稳定的 IP 地址,并成功实现上网功能。
因为我需要给容器添加上网的黑白名单,但是我发现机器一重启,容器就上不了网了,仔细检查后发现容器的ip是自动变化的。。。
那固定ip就成了首要大事。这个文章主要介绍如何在docker-compose部署的环境中,设置网络并固定ip。
情况1:将一些容器固定在一个网段下
如果你需要将多个容器放在一个网段下,可以使用这个教程。
我们先定义一个网络
我定义的网络名字叫做heo_global_network
用于网络通信的,所以名字也非常清晰。ip通信网段我设置成172.168.0.0/16
,规定了ip地址的开头为172.68.*.*
我们首先创建这个网络。
1 | docker network create --driver bridge --subnet 172.168.0.0/16 heo_global_network |
你可以根据自己的需求来更改参数。
修改容器
我们来修改docker-compose文件。以我的certimate服务为例,他的docker-compose是这样的:
1 | version: "3.0" |
我们首先要添加heo_global_network的定义:
1 | networks: |
external代表了用已经创建的网络,因为我们最开始已经用命令创建好了。
然后给容器设置静态ip地址:
1 | services: |
最终的文件为:
1 | version: "3.0" |
更新容器
我们cd到docker-compose.yaml文件所在的目录,执行
1 | docker-compose up -d |
即可。我们就可以看到这个容器的ip已经成功固定了。
情况2:只需要将一个容器固定ip
如果你只需要一个容器固定ip,那我们可以通过直接修改docker-compose.yaml文件来进行修改。
添加网络定义(方便管理)
1 | networks: |
我们这里需要修改custom_network
为网络名称,custom_net
起一个名,然后修改172.24.0.0/16
设置一个子网。
修改容器配置
1 | services: |
我们需要修改custom_network
为刚才网络定义的地址,然后172.24.0.10
设置成子网下的一个地址即可。
最终的文件为:
1 | version: "3.0" |
注意
设置ip的时候结尾不要设置为.0和.1,避免和网关冲突。
- 感谢你赐予我前进的力量
打赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 张洪Heo
评论
生成评论
匿名评论
违规举报
✅ 你无需删除空行,直接评论以获取最佳展示效果