Docker コンテナが開始されると、デフォルトでネットワーク名前空間に対応するネットワーク カードがホストに割り当てられ、IP アドレスがこのネットワーク名前空間の下にランダムに割り当てられます。
Docker コンテナの IP アドレスを変更する場合は、いくつかの方法があります。
- Docker ホストの Docker ネットワークを変更する
Docker ホスト上の/etc/docker/daemon.json
ファイルを変更し、次のコンテンツを追加できます。
{
"bip": "192.168.1.5/24",
}
これにより、Docker コンテナに IP が割り当てられるサブネット192.168.1.0/24
と、設定されるデフォルト ゲートウェイが変更されます192.168.1.1
。
これは Docker を再起動した後に有効になり、それ以降に作成されたコンテナーにはこのサブネット内の IP が割り当てられます。
2. コンテナを起動するときに、コンテナの IP アドレスを指定するパラメータを
使用してIP を指定します。--ip
docker run -it --ip 192.168.1.10 ubuntu:18.04
これにより、192.168.1.10
この IP が新しく開始されたコンテナに強制的に割り当てられます。
3. コンテナ起動後のIP変更 コンテナ
起動後にコンテナ内のネットワーク構成を直接変更してIPアドレスを変更できます。
まず、コンテナのネットワーク名前空間を見つけます。使える:
docker inspect 容器id|name # 查看"NetworkSettings"下的"SandboxKey"值
次に、次のip netns exec
コマンドを使用してネットワーク名前空間を入力します。
sudo ip netns exec 沙盒KEY /bin/bash
この名前空間でネットワーク構成を変更するだけです。例えば:
ip addr add 192.168.1.15/24 dev eth0
ip link set eth0 up
これにより、eth0 ネットワーク カードの IP が に設定されます192.168.1.15
。
終了後、コンテナの IP が変更されます。コンテナが他のコンテナまたはホスト (たとえば) の構成に古い IP を書き込んでいる場合、それらの場所の構成をそれに応じて変更する必要があること
に注意してください。そうしないと、ネットワーク異常が発生する可能性があります。上記は、Docker コンテナの IP アドレスを変更するための一般的な方法をいくつか示しています。実際のシナリオに応じて、適切なソリューションを選択してください。/etc/resolv.conf