在NetworkSettings Docker Container中分配IPAddress

时间:2018-05-14 03:52:21

标签: docker

我现在正在尝试运行docker容器,并希望为该容器设置ip static。到目前为止我做了什么:

  1. 运行docker network set subnet
  2. 运行docker container,使用--ip =“172.20.0.3”作为示例设置网络设置IP
  3. 使用docker inspect检查docker容器并查找尚未设置IPAddress或返回""
  4. Docker检查网络上的返回IP地址已成功分配
  5. Docker inspect还会返回NetworkSettings上未分配的IPAddress
  6. 要描述IPAddress未设置,请在下面找到docker inspect的详细信息:

         "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "cc37c6777a8f65268ab088bc6587f463aee7c7878d1fa6045229e4c6ca9b8055",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "3306/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "3306"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/cc37c6777a8f",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "", //HERE IPAddress that i want to set
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "my-netto": {
                    "IPAMConfig": {
                        "IPv4Address": "172.20.0.3"
                    },
                    "Links": null,
                    "Aliases": [
                        "5b909fdca063"
                    ],
                    "NetworkID": "6697e2deabb509d0f4a207674909d19c552bb8b77d1c62bdc94b6979b1844f10",
                    "EndpointID": "fd902fcf7351a777b90c7eed4c27a7255fa84aa9f705db84db226dd42c554faf",
                    "Gateway": "172.20.0.1",
                    "IPAddress": "172.20.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:14:00:03",
                    "DriverOpts": null
                }
            }
        }
    }
    
         

    NetworkSettings部分中设置IPAddress的任何命令?

    任何帮助都会受到赞赏。

    提前致谢。

2 个答案:

答案 0 :(得分:0)

首先必须使用此命令创建网络

docker network create --subnet=172.28.0.0/16 --ip-range=172.28.5.0/24 --gateway=172.28.5.254 name-of-network

使用此命令启动容器:

docker run -it --name $container_name -d -h "$host_name" -p $host_port:8080 --ip="172.20.5.2" --mac-address="12:34:56:78:9a:bd" --network="name-of-network" $image-name

只需更改--ip--mac-address

,即可使用上述命令启动多个容器

希望这会有所帮助。

谢谢!

答案 1 :(得分:0)

由于容器中不允许编辑IPAddress,因此我找到了使用--link的方法,它就像魅力一样。

在我的情况下,我想部署一个mysql容器并部署另一个Node.js应用程序。在几篇文章之后,我发现这个docker mysql documentation正在准备一些案例,如果你想使用mysql作为与另一个应用程序的连接。

因此,当我运行docker应用程序时,我在运行命令中添加--link mysql-docker-name:mysql,在数据库配置中将mysql作为主机。

希望这会帮助那些遇到同样问题的人。