Docker inspect包含ip更改后的旧ip地址
我使用node.js应用程序(取决于apocas的DockerRode API)创建docker容器,每个容器连接多个docker网络。默认情况下,每个容器为每个网络接口获取一个随机ip地址 示例: ip为172.18.0.2并连接到接口eth4上的网络演示网络的开发人员容器 当我执行Docker inspect包含ip更改后的旧ip地址,docker,dockerode,Docker,Dockerode,我使用node.js应用程序(取决于apocas的DockerRode API)创建docker容器,每个容器连接多个docker网络。默认情况下,每个容器为每个网络接口获取一个随机ip地址 示例: ip为172.18.0.2并连接到接口eth4上的网络演示网络的开发人员容器 当我执行docker inspect dev container时,我可以看到network demo net已连接到ip地址为172.18.0.2的容器dev container(如预期的那样) 现在,我使用docker
docker inspect dev container
时,我可以看到network demo net已连接到ip地址为172.18.0.2的容器dev container(如预期的那样)
现在,我使用docker exec-it dev container/bin/bash执行dev容器,并使用ifconfig eth4 192.168.99.169 netmask 255.255.240.0
配置ip地址
结果:ifconfig
显示新地址192.168.99.169连接到接口eth4。但是,当我再次执行docker inspect dev container
时,仍然存在与网络演示网连接的旧地址172.18.0.2(不需要)
docker是否有办法更新内部网络设置,以便docker inspect显示更新的ip设置,或者有更好的方法更改容器ip地址
(Docker版本为19.03.12)如果您试图手动更改容器的网络配置,Docker将不会注意到。您可以docker rm
您的容器,然后docker再次运行它
以此类推,您可以尝试登录您的家庭WiFi路由器。它可能会说你的笔记本电脑是192.168.1.2,打印机是192.168.1.3。您当然可以运行ifconfig
将笔记本电脑的IP地址更改为192.168.1.3/24或10.20.30.40/16;但是,如果您这样做,您的路由器将不知道这是怎么回事,如果您尝试呼出(或者如果您设置了反向NAT规则以允许入站呼叫返回),IP路由将无法正常工作,并且如果您尝试打印,您可能会遇到奇怪的网络冲突
Docker完全管理容器的网络接口。没有理由在容器中运行ifconfig
或ip
。容器私有IP地址实际上是一个实现细节,在许多常见情况下无法使用;我也会避免查这个。同样,您也不需要手动设置,但如果手动设置,则(基本上由dockerode直接公开)允许您指定NetworkingConfig