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

你可能感兴趣的:(linux,docker,tcp/ip,容器)