8

コンテナーの静的 IP を修正するにはどうすればよいですか?

まず、コンテナを起動して検査すると、

"NetworkSettings": {
    "IPAddress": "XX.XX.206.98",
    "IPPrefixLen": 27,
    "Gateway": "XX.XX.206.105",
    "Bridge": "public",
    "PortMapping": null,
    "Ports": {}
},

それから私はそれを止めて、再起動します。

"NetworkSettings": {
    "IPAddress": "XX.XX.206.99",
    "IPPrefixLen": 27,
    "Gateway": "XX.XX.206.105",
    "Bridge": "public",
    "PortMapping": null,
    "Ports": {}
},

ご覧のとおり、変わりました。public という名前のブリッジを作成し、docker を -b=public追加で起動しました。コンテナーの静的 IP を設定するにはどうすればよいですか?

4

1 に答える 1

4

Docker 1.10 以降

# create a new bridge network with your subnet and gateway for your ip block
$ docker network create --subnet 203.0.113.0/24 --gateway 203.0.113.254 iptastic

# run a nginx container with a specific ip in that block
$ docker run --rm -it --net iptastic --ip 203.0.113.2 nginx

# curl the ip from any other place (assuming this is a public ip block duh)
$ curl 203.0.113.2

アップデート

現在、静的 IP を取得する唯一の方法は、 pipeworkまたはovs-docker の2 つのスクリプトを使用することです。

Open vSwitch をマルチホスト Docker コンテナーの「バッテリー込み」バージョンとして使用する方向性が強く示されています。

socketplaneに注目してください。


この動作は仕様です。

将来のリリースでこれを変更することについて、非常に興味深い議論があります。

これまでのところ、Linux コンテナーにフォールバックすることが唯一の方法です。

docker run \
-n=false \
-lxc-conf="lxc.network.type = veth" \
-lxc-conf="lxc.network.ipv4 = 172.16.42.20/24" \
-lxc-conf="lxc.network.ipv4.gateway = 172.16.42.1" \
-lxc-conf="lxc.network.link = docker0" \
-lxc-conf="lxc.network.name = eth0" \
-lxc-conf="lxc.network.flags = up" \
-i -t my_image:my_tag /bin/bash

そのため-n=false、自動 docker ネットワーキングが無効になり、すべての-lxc-confオプションは実際に必要に応じて仮想ネットワークを定義することになります。

于 2014-01-23T14:01:58.963 に答える