【问题标题】:Is it possible to assign a static public ip to a Docker Container?是否可以将静态公共 IP 分配给 Docker 容器?
【发布时间】:2015-02-15 10:50:56
【问题描述】:

我一直在尝试将我的五个公共 ip 之一分配给我的 docker 容器。由于 docker 的性质及其用途,这似乎应该是可能的。我发现这个网站解释了我想做什么,但自从 Docker 离开 LXC 后它不再有效:

http://programster.blogspot.com/2014/06/docker-run-multiple-docker-websites-on.html

我尝试使用我的容器正在使用的 ip 建立静态 NAT 连接,但没有成功。 docker IP 没有显示在我的路由器页面中,只有主机 ip。

我的问题是:

是否可以将静态公共 ip 分配给 docker 容器,如果可以,如何分配?

是否可以让 docker IP 出现在我的路由器配置页面中,如果可以,如何?

谢谢。

【问题讨论】:

    标签: networking docker lxc


    【解决方案1】:

    Docker 1.10 将允许您为容器指定静态 IP 地址 对于它所连接的每个网络。

    (请注意,为了向后兼容,此功能仅支持自定义网络,并且仅在指定子网的情况下)

    例如;

    docker network create -d bridge --subnet 172.25.0.0/16 mynet
    
    docker run -d --net=mynet --ip=172.25.3.3 nginx
    

    欲了解更多信息,请参阅documentation pull request

    【讨论】:

      【解决方案2】:

      我知道让 docker 容器使用静态 IP 的唯一方法是使用 pipework

      假设您的意思是获得 DHCP 租约并显示在您的路由器页面上—— docker 什么都没有想到。我不认为那是“码头工人的方式”。如果您使用的是基于 systemd 的发行版 FWIW,则使用 nspawn 非常简单。

      【讨论】:

        【解决方案3】:

        可能的解决方案,但我现在无法测试。如果这不正确,请告诉我。

        用macvlan制作虚拟网络接口:

        https://superuser.com/questions/175475/ip-address-alias-assigned-by-dhcp

        命令:

        ip link add dev macvlan0 link eth0 type macvlan #macvlan0 是 v-card 的名字 (lol)

        使用管道将容器连接到虚拟网络接口:

        https://github.com/jpetazzo/pipework/#connect-a-container-to-a-local-physical-interface

        命令:

        管道 macvlan0 $($containerid) dhcp

        【讨论】:

        • 似乎只是为了让它“显示”在路由器页面上而进行额外的工作。如果它 ping 并响应一个 IP 地址——谁在乎它是否显示在 DHCP 租用页面上?
        • 我需要将我的一些容器静态 Nat 到一个公共 IP。分配给我的一个容器的 IP 似乎不适用于静态 Nat,所以我认为这可能是一个很好的解决方案。如果存在更简单的方法,请告诉我! :)
        猜你喜欢
        • 1970-01-01
        • 2021-05-02
        • 2015-03-12
        • 1970-01-01
        • 2021-10-26
        • 2017-05-07
        • 2021-08-13
        • 2019-08-09
        • 1970-01-01
        相关资源
        最近更新 更多