固定docker容器IP方法_docker 容器固定ip-程序员宅基地

技术标签: linux  docker  

docker 默认有4种网络模式,详细可查看我曾经写的 "docker几种网络模式"

docker run 新建并启动容器时,不指定网络,默认是使用桥接模式,容器内部IP是通过DHCP获取,容器网桥名为docker0,docker容器重启后,其容器IP会变化。有没有办法来固定容器内的IP呢?答案是肯定的。可以使用脚本或工具来固定容器内部IP。

一、如何查看容器内部IP?:

方法一:

通过docker inspect查看容器的详细信息来查看,可以使用grep来匹配查询

[root@localhost ~]# docker inspect centos7 | grep -aiE ipaddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",
[root@localhost ~]# docker inspect centos7 | grep -aiE ipaddress | tail -1
                    "IPAddress": "172.17.0.2",

[root@localhost ~]# docker inspect centos7 | grep -aiE ipaddress | tail -1 | grep -aiowE "([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3})"  
172.17.0.2
[root@localhost ~]# 

[root@localhost ~]# docker inspect centos7 | grep -aiE ipaddress | tail -1 | grep -aiowE "([0-9]{1,3}\.){3}[0-9]{1,3}"                           
172.17.0.2
[root@localhost ~]# 

方法二:

通过docker exec  来查看

[root@localhost ~]# docker exec centos7 ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
        RX packets 15026  bytes 35185160 (33.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9009  bytes 503286 (491.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost ~]# 

方法三

docker    exec登录容器内查看

[root@localhost ~]# docker exec -it centos7 /bin/bash
[root@b7f8b1907403 ansible]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
        RX packets 15026  bytes 35185160 (33.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9009  bytes 503286 (491.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@b7f8b1907403 ansible]# 

二、固定容器内部IP

1、使用pipework工具

[root@localhost src]# ls
debug  default.conf  harbor  jforum-2.5.0.war  kernels  nginx.conf  pipework
[root@localhost src]# mv pipework  /usr/local/bin
[root@localhost src]# pipework -h
-bash: /usr/local/bin/pipework: 权限不够
[root@localhost src]# chmod +x /usr/local/bin/pipework 
[root@localhost src]# pipework  -h
Syntax:
pipework <hostinterface> [-i containerinterface] [-l localinterfacename] [-a addressfamily] <guest> <ipaddr>/<subnet>[@default_gateway] [macaddr][@vlan]
pipework <hostinterface> [-i containerinterface] [-l localinterfacename] <guest> dhcp [macaddr][@vlan]
pipework mac:<hostinterface_macaddress> [-i containerinterface] [-l localinterfacename] [-a addressfamily] <guest> <ipaddr>/<subnet>[@default_gateway] [macaddr][@vlan]
pipework mac:<hostinterface_macaddress> [-i containerinterface] [-l localinterfacename] <guest> dhcp [macaddr][@vlan]
pipework route <guest> <route_command>
pipework rule <guest> <rule_command>
pipework tc <guest> <tc_command>
pipework --wait [-i containerinterface]
[root@localhost src]# 

把容器内部IP固定为:172.17.0.2

[root@localhost src]# pipework  docker0 centos7 172.17.0.2/[email protected]
[root@localhost src]# 

docker0为网桥名。容器内网桥名。172.17.0.1为容器的网关。

重启容器确认IP变化

[root@localhost src]# docker restart  centos7
centos7

[root@localhost src]# docker inspect centos7 | grep -aiE ipaddress | tail -1
                    "IPAddress": "172.17.0.2",
[root@localhost src]# 

[root@localhost src]# ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.114 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.192 ms
^C
--- 172.17.0.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 0.114/0.153/0.192/0.039 ms
[root@localhost src]#

发现,多次重启容器,IP始终为172.17.0.2不再变化。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/robin_cai/article/details/124397285

智能推荐

提取文件夹下的所有文件名及子文件夹下的文件名(含路径)-程序员宅基地

文章浏览阅读1.2w次,点赞4次,收藏18次。‍‍‍‍‍ 1.使用斜杠划分路径,每个文件都有具体的路径。 @echo offdir /s/b *.* > 文件名.txtexit 2.使用树状图表示文件结构,层次清晰。 @echo offfor /f "delims=" %%i in ('cd') do set "..._导出文件夹中所有文件名 包括子文件夹

压缩软件电脑版哪个好?_压缩软件 csdn-程序员宅基地

文章浏览阅读544次,点赞5次,收藏8次。可以放心的是,这四款软件都经过了安全测试,能够保证文件的安全性,并且能够兼容多种操作系统,在不同的平台上使用。2、在压缩文件名和参数窗口中,按需设置相关参数,比如设置压缩文件名、压缩文件格式,压缩方式等。* 压缩效率:压缩效率较高,可以快速地完成文件压缩,同时提供了多种压缩级别供用户选择。* 压缩效率:压缩效率较高,可以快速地完成文件压缩,并提供了多种压缩级别供用户选择。3、再选择【压缩等级】,极限压缩压缩的文件可以到达最小,同时压缩后的质量最低。4、设置好参数后点击【立即压缩】,还可以选择压缩配置。_压缩软件 csdn

笔记:AI量化策略开发流程-基于BigQuant平台(一)-程序员宅基地

文章浏览阅读1.6k次。从本文开始,按照AI策略开发的完整流程(共七步),上手在BigQuant平台上快速构建AI策略。_bigquant

git 如何把master分支代码合并到自己的分支_master 分支可以合到其他分支吗-程序员宅基地

文章浏览阅读4.7w次,点赞42次,收藏147次。git 如何把master分支代码合并到自己的分支master分支的代码领先自己的分支,git 如何把master分支代码合并到自己的分支1.首先切换到主分支git checkout master2.使用git pull 把领先的主分支代码pull下来git pull3.切换到自己的分支git checkout xxx(自己的分支)4.把主分支的代码me..._master 分支可以合到其他分支吗

蓝桥杯:枚举、模拟、排序_蓝桥杯枚举问题-程序员宅基地

文章浏览阅读169次。这类问题在蓝桥杯中经常出现,没有固定做法,一般难度不算大。一般做法是按照题目要求模拟出来,一般不会涉及最优化问题。_蓝桥杯枚举问题

delphi调用c#写的webservice中文出现乱码的问题-程序员宅基地

文章浏览阅读112次。解决方法:HTTPRIO1的属性---HttpWebNode--UseUtf8InHeader设置为true 代码片断:function TLoginManager.Get_LoginManagerSoap: ILoginManagerSoap;const defSvc='LoginManager'; defPrt='LoginManagerSoap';var R..._delphi7中调用c#开发的web service时,传入的每个汉字变成了三个问号???

随便推点

IDEA关联tomcat操作步骤_idea连接tomcat红方块-程序员宅基地

文章浏览阅读1.4k次。如图使用IDEA打开java web项目,出现了上图各种包找不到,出现这种原因的是没有关联tomcat的jar包,如何解决这样的问题第一步:第二步:-> 第三步:此时当前java web项目已经关联了tomcat,但此时还是出现找不到相关包,接下来还是要继续关联tomcat 里的jar包,具体操作如下到这里就完成了对tomcat jar包的依赖,返回刚才找不到包的文件 按下 alt+enter 导包就可以了。这样就可以了。具..._idea连接tomcat红方块

oracle执行netca报错UnsatisfiedLinkError exception loading native library: njni11-程序员宅基地

文章浏览阅读5.1k次,点赞3次,收藏5次。执行netca /silent /responsefile /datas/oracle/response/netca.rsp报错UnsatisfiedLinkError exception loading native library: njni11[oracle@oracle ~]$ netca /silent /responsefile /datas/oracle/response/netca.rspUnsatisfiedLinkError exception loading native libr_unsatisfiedlinkerror exception loading native library: njni11

图扑科技|智慧船舰,水运的主力军_图扑综合自动化-程序员宅基地

文章浏览阅读429次。在智慧船舶自动化信息服务平台的研究中,常规的服务平台在运行过程中存在服务节点失效的情况,降低了用户体验。面对这一问题,图扑软件提出基于云计算虚拟化技术的智慧船舶自动化信息服务平台设计。效果展示通过 HT 实现可交互式的 Web 三维场景,可进行缩放、平移、旋转、翻转,场景内各设备可以响应交互事件。结合 HT 引擎强大的渲染能力,保证场景在 Web 中高效流畅地加载运行并保证优秀的可视化效果。2D、3D 无缝衔接,完美融合。注重细节刻画,点击相对应的设备能显示其作业等信息。船舶信息可._图扑综合自动化

短信验证php_php如何实现短信验证-程序员宅基地

文章浏览阅读481次。php实现短信验证的方法:首先接入短信服务;然后在网站信息提交页面请求发送信息;接着服务器向短信服务提供商通信,提交发送请求;最后短信服务提供商通过运营商将信息发送到用户的手机中。php实现短信验证的方法:第一、实现php手机短信验证功能的基本思路1、要找到短信服务提供商,接入短信服务2、在网站信息提交页面请求发送信息3、服务器向短信服务提供商通信,提交发送请求4、短信服务提供商通过运营商将信息发..._php短信验证码校验 代码实现

cdev、misc以及device三者之间的联系和区别-程序员宅基地

文章浏览阅读7.4k次,点赞19次,收藏62次。1.从/dev目录说起从事Linux嵌入式驱动开发的人,都很熟悉下面的一些基础知识比如对于一个char类型的设备,我想对其进行read wirte 和ioctl操作,那么我们通常会在内核驱动中实现一个file_operations结构体,然后分配主次设备号,调用cdev_add函数进行注册。从/proc/devices下面找到注册的设备的主次设备号,在用mknod /dev/char_de..._cdev、misc以及device三者之间的联系和区别

关于瑞萨编译器cs for cc和cs for ca cx的不同_瑞萨cx和cc-程序员宅基地

文章浏览阅读3k次。CC:对寄存器的操作不能使用类似51单片机的方法,如P1.1,定义了寄存器的地址,使用结构体对其进行操作,定义在头文件iodefine.h可以找到,如下:结构体定义地址定义CA CX可以使用类似51单片机一样的对寄存器的操作方法,其在macrodriver.h中有预处理命令:#pragma sfr预处理命令所以换编译器时代码需要对相关定义进行修改。..._瑞萨cx和cc

推荐文章

热门文章

相关标签