Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker inspect包含ip更改后的旧ip地址_Docker_Dockerode - Fatal编程技术网

Docker inspect包含ip更改后的旧ip地址

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

我使用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 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