docker改容器IP的两种方法

redmond88 2024-08-05 15:07:03 阅读 58

最简单实用的方法:

docker默认的内网网段为172.17.0.0/16,如果公司内网网段也是172.17.x.x的话,就会发生路由冲突。

解决办法

改路由比较办法,可以一开始就将docker配置的bip改成169.254.0.1/24,可以避免冲突。

在daemon配置文件里加个"bip":“169.254.0.1/24”,重启docker就可以了

1

2

3

4

<code>[root@st-dev6 ~]# vim /etc/docker/daemon.json

{

"bip":"169.254.0.1/24"

}

systemctl restart docker

如果已经建好容器,可按以下2个方法进行更改:

方法一:在Docker中,容器默认使用的是桥接模式的网络,这个网络是由Docker自动管理的。如果你想要为容器指定一个IP地址,你可以创建一个自定义的网络,并在运行容器时指定IP。

以下是创建自定义网络并为容器指定IP的步骤:

请注意,指定的IP地址必须在你创建的自定义网络的子网范围内。如果你想要修改正在运行的容器的IP地址,你需要先停止容器,然后删除它,并使用新的IP地址重新创建它。

docker stop myapp

docker rm myapp

创建自定义网络:

docker network create --subnet=172.18.0.0/16 mynet

     2.运行容器时指定IP:

docker run --network mynet --ip 172.18.0.22 -d nginx

在这个例子中,我们创建了一个名为mynet的自定义网络,并指定了一个172.18.0.0/16的子网。然后,我们运行一个nginx容器,并将其IP设置为172.18.0.22。

验证: docker inspect myapp | grep "IPAddress"

方法二:想要修改正在运行的jms_redis容器IP

1、docker network ls 查看网络情况

[root@docker-server containers]# docker network ls

NETWORK ID     NAME      DRIVER    SCOPE

cc39f6bdde6e   bridge    bridge    local

b6af872c8bd6   host      host      local

4c1eb41fb1a8   jms_net   bridge    local

9f111fc0102f   mynet     bridge    local

740c9ce10fc1   none      null      local

 

2、docker network inspect 4c1eb41fb1a8

查看jms_net ID的具体配置

或者用这个命令

[root@docker-server containers]# docker inspect jms_redis |grep IPAddress

            "SecondaryIPAddresses": null,

            "IPAddress": "",

                    "IPAddress": "192.168.250.2",

 

3、需要进入容器的网络命名空间。可以使用以下命令获取容器的PID(Process ID)号

[root@docker-server containers]# docker inspect -f '{ {.State.Pid}}' 9d06599e52df

21985

4、可以使用以下命令进入容器的网络命名空间:

[root@docker-server containers]# nsenter --target 21985 --net /bin/bash

 

在容器内部,可以使用ip addr命令查看容器的网络配置信息。

4、修改jms_redis 容器IP

ip addr add 172.18.0.22/16 dev eth0

ip link set eth0 up

使用ip link set命令将eth0接口打开

再次使用ip addr命令查看容器的网络配置信息,确认修改是否已经生效。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。