静的IPアドレスは、コンテナまたはサービスが停止および開始されても変更されないため、永続的なネットワーキングに役立ちます。 Dockerコンテナに静的IPアドレスを割り当てることは、Dockerコンテナをよりアクセスしやすくするための簡単な方法です。
静的IPを使用する理由
「静的IP」には2種類あります。サーバー内部の内部ネットワークに使用されるプライベートIPアドレス、およびサーバーの外部に接続するために使用されるパブリックIPアドレス(多くの場合、インターネット経由)。
コンテナのパブリックIPアドレスを設定する必要がある場合は、ポートバインディングを使用することをお勧めします。 Dockerコンテナーのポートを「公開」して、ホストからアクセスできるようにすることができます。より高度なネットワーク設定がありますが、これははるかに簡単で最も一般的です。たとえば、ホストのポート80(HTTP)をバインドしてNGINXコンテナを指すようにします。
docker run --publish=80:8080 nginx
静的プライベートIPアドレスを作成する場合は、それを使用する必要があるかどうかを検討する必要があります。ほとんどの場合、静的IPが別のコンテナまたはホストから1つのコンテナと通信する必要があります。ほとんどの場合、Dockerの組み込みネットワークでこれを処理できます。
Dockerにはデフォルトのネットワークが付属していますが、独自のネットワークを作成する場合は、そのネットワークで起動したときにコンテナーにエイリアスを指定できます。このエイリアスは、コンテナのプライベートIPに自動的に解決されます。たとえば、ここのNGINXコンテナは、接続文字列mongodb://mongohost:27017
を使用してMongoDBインスタンスにアクセスできます。 。
docker network create example docker run --net example --name nginx -d nginx docker network connect example --alias mongohost mongodb
詳細については、ユーザー定義のブリッジネットワークに関するDockerのドキュメントをご覧ください。
ただし、ホストから直接コンテナにアクセスするなど、プライベートIPアドレスを手動で指定したい場合はまだたくさんあります。これを行うには、カスタムDockerネットワークを使用する必要がありますが、セットアップは簡単です。
静的IPの設定
まず、Dockerネットワークを設定する必要があります。また、IPアドレスを考慮しているため、固定サブネットを指定する必要があります。
docker network create --subnet=172.20.0.0/16 customnetwork
関連: サブネットとは何ですか。また、サブネットはネットワークにどのように影響しますか?
次に、--net
でネットワークを指定して、コンテナを実行できます。 フラグを立て、-ip
でIPを指定します フラグ:
docker run --net customnetwork --ip 172.20.0.10 -d container
exec -t bin/bash
を使用してコンテナ内でアドレスをチェックすることにより、アドレスが正しいことを確認できます。 、またはDockerコンテナリストを調べることによって:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' name_or_id
DockerComposeの使用
Docker Composeは、事前定義された設定で複数のコンテナーを起動するために使用されるツールです。これには、特定のサブネットを持つネットワークの設定が含まれ、ipv4_address
を使用して、固定IPを持つネットワークにコンテナを接続できます。 ここに示されている構成ブロック:
version: '2' services: webserver: image: nginx container_name: web-server networks: customnetwork: ipv4_address: 172.20.0.10 networks: customnetwork: ipam: config: - subnet: 172.20.0.0/16