设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间23 现在时间23 缓存数据 荣耀也罢,屈辱也罢,都要以平和的心态去面对,少一些无奈与感慨,多一份从容和淡然。晚安!

荣耀也罢,屈辱也罢,都要以平和的心态去面对,少一些无奈与感慨,多一份从容和淡然。晚安!

查看: 1034|回复: 1

Docker中设置静态IP地址方式

[复制链接]

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
43
主题
35
精华
0
金钱
123
积分
78
注册时间
2023-10-4
最后登录
2025-8-29

发表于 2025-8-29 21:53:27 | 显示全部楼层 |阅读模式
Docker容器设置静态IP地址

在Docker中为容器分配静态IP地址有多种方法,以下是详细的解决方案:

方法一:使用自定义bridge网络(推荐)

这是最常用的静态IP分配方式,适用于大多数场景:
  1. # 1. 创建自定义网络
  2. docker network create \
  3.   --driver=bridge \
  4.   --subnet=172.20.0.0/16 \
  5.   --gateway=172.20.0.1 \
  6.   --ip-range=172.20.5.0/24 \
  7.   my-static-net

  8. # 2. 运行容器并分配静态IP
  9. docker run -d --name web-server \
  10.   --network my-static-net \
  11.   --ip 172.20.5.10 \
  12.   nginx:alpine

  13. # 3. 验证IP分配
  14. docker exec web-server ip addr show eth0
复制代码
方法二:使用macvlan网络(容器获取物理网络IP)

当容器需要直接接入物理网络时:
  1. # 1. 创建macvlan网络
  2. docker network create -d macvlan \
  3.   --subnet=192.168.1.0/24 \
  4.   --gateway=192.168.1.1 \
  5.   --ip-range=192.168.1.100/28 \
  6.   -o parent=eth0 \
  7.   macvlan-static

  8. # 2. 运行容器并分配静态IP
  9. docker run -d --name network-app \
  10.   --network macvlan-static \
  11.   --ip=192.168.1.101 \
  12.   nginx:alpine
复制代码
方法三:使用docker-compose配置静态IP

适用于docker-compose部署场景:
  1. version: '3.7'

  2. services:
  3.   web:
  4.     image: nginx:alpine
  5.     networks:
  6.       static-net:
  7.         ipv4_address: 172.22.0.10

  8.   db:
  9.     image: postgres:13
  10.     networks:
  11.       static-net:
  12.         ipv4_address: 172.22.0.20

  13. networks:
  14.   static-net:
  15.     driver: bridge
  16.     ipam:
  17.       config:
  18.         - subnet: 172.22.0.0/24
  19.           gateway: 172.22.0.1
复制代码
启动服务:
  1. docker-compose up -d
复制代码
方法四:修改现有容器的IP地址

修改已运行容器的IP需要重新创建容器:
  1. # 1. 停止并删除容器
  2. docker stop my-container && docker rm my-container

  3. # 2. 创建自定义网络(如果尚未创建)
  4. docker network create --subnet=10.5.0.0/16 custom-net

  5. # 3. 使用新IP重新运行容器
  6. docker run -d --name my-container \
  7.   --network custom-net \
  8.   --ip 10.5.0.100 \
  9.   nginx:alpine
复制代码
验证静态IP配置
  1. # 检查容器IP
  2. docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web-server

  3. # 进入容器测试网络
  4. docker exec -it web-server sh
  5. ping 8.8.8.8
复制代码
注意事项及常见问题解决

IP地址冲突

  • 解决方案:使用
    1. --ip-range
    复制代码
    限制可用IP范围
  • 检查IP是否可用:
    1. ping <目标IP>
    复制代码
默认bridge网络不支持静态IP

  • 必须创建自定义网络
macvlan网络宿主机无法访问容器
  1. sudo ip link add host-macvlan link eth0 type macvlan mode bridge
  2. sudo ip addr add 192.168.1.99/24 dev host-macvlan
  3. sudo ip link set host-macvlan up
复制代码

  • 解决方法:创建macvlan接口
云环境限制问题
  1. docker network create -d ipvlan \
  2.   --subnet=192.168.1.0/24 \
  3.   --gateway=192.168.1.1 \
  4.   -o parent=eth0 \
  5.   -o ipvlan_mode=l2 \
  6.   ipvlan-net
复制代码

  • 解决方案:改用ipvlan模式

静态IP与动态IP对比

特性静态IP动态IP地址稳定性永久固定容器重启可能改变网络配置需要手动管理自动分配适用场景服务发现、固定端点的应用临时性、无状态应用容器间通信可直接通过IP访问需要通过容器名或服务名
最佳实践建议

使用自定义DNS名称替代IP
  1. docker run -d --name service1 --network my-net nginx
  2. docker run -d --name service2 --network my-net alpine ping service1
复制代码
结合端口映射使用
  1. docker run -d --name web \
  2.   --network my-static-net \
  3.   --ip 172.20.5.10 \
  4.   -p 8080:80 \
  5.   nginx:alpine
复制代码
多容器网络配置
  1. docker network create app-network --subnet=10.1.0.0/24

  2. docker run -d --name db \
  3.   --network app-network \
  4.   --ip 10.1.0.100 \
  5.   postgres

  6. docker run -d --name app \
  7.   --network app-network \
  8.   --ip 10.1.0.101 \
  9.   -e DB_HOST=10.1.0.100 \
  10.   my-app-image
复制代码
通过以上方法,您可以根据实际需求为Docker容器配置静态IP地址,确保网络配置的稳定性和可预测性。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持晓枫资讯。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
21
积分
22
注册时间
2022-12-27
最后登录
2022-12-27

发表于 2025-11-15 07:22:33 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表