Dockerコンテナに静的IPを割り当てる 質問する

Dockerコンテナに静的IPを割り当てる 質問する

現在、Docker コンテナの起動時に静的 IP 172.17.0.1 を割り当てようとしています。

このコンテナの SSH ポートとしてポート 2122 を使用し、このコンテナがポート 2122 をリッスンするようにします。

sudo docker run -i -t -p 2122:2122 ubuntu

このコマンドは、172.17.0.5 のようなランダムな IP を持つ Docker コンテナを実行しますが、コンテナに特定の IP を割り当てる必要があります。

次のシェル スクリプトは、高度なネットワーク設定で Docker ドキュメントを参照したものです。

pid=$(sudo docker inspect -f '{{.State.Pid}}' <container_name> 2>/dev/null)
sudo rm -rf /var/run/netns/*
sudo ln -s /proc/$pid/ns/net /var/run/netns/$pid
sudo ip link add A type veth peer name B
sudo brctl addif docker0 A
sudo ip link set A up
sudo ip link set B netns $pid
sudo ip netns exec $pid ip link set eth0 down
sudo ip netns exec $pid ip link delete eth0
sudo ip netns exec $pid ip link set dev B name eth0
sudo ip netns exec $pid ip link set eth0 address 12:34:56:78:9a:bc
sudo ip netns exec $pid ip link set eth0 down
sudo ip netns exec $pid ip link set eth0 up
sudo ip netns exec $pid ip addr add 172.17.0.1/16 dev eth0
sudo ip netns exec $pid ip route add default via 172.17.42.1

このシェル スクリプトは、静的 IP 172.17.0.1 を割り当て、世界に正常にリンクします。しかし、ローカルからこのコンテナーに SSH 接続しようとすると、機能しませんでした。どのような問題が発生したのでしょうか?

ベストアンサー1

Docker バージョン 1.10.1、ビルド 9e83765 を使用すると簡単になります。

まず、独自のDockerネットワーク(mynet123)を作成する必要があります。

docker network create --subnet=172.18.0.0/16 mynet123

次に、イメージを実行するだけです(Ubuntuを例に説明します)

docker run --net mynet123 --ip 172.18.0.22 -it ubuntu bash

次にUbuntuシェルで

ip addr

さらに、

  • --hostnameホスト名を指定する
  • --add-host/etc/hostsにエントリを追加する

ドキュメント(およびネットワークを作成する必要がある理由)https://docs.docker.com/engine/reference/commandline/network_create/

おすすめ記事