0


docker改容器IP的两种方法

最简单实用的方法:

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

[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

  1. 创建自定义网络:

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命令查看容器的网络配置信息,确认修改是否已经生效。

标签: docker tcp/ip 容器

本文转载自: https://blog.csdn.net/redmond88/article/details/138977601
版权归原作者 redmond88 所有, 如有侵权,请联系我们删除。

“docker改容器IP的两种方法”的评论:

还没有评论