web-dev-qa-db-ja.com

Docker:コンテナポートをホスト上の単一のIPv6アドレスにマップします

一部のサーバーアプリケーションがDockerコンテナーにパックされたので、それらを本番サーバーにデプロイしようとしています。私のコンテナは、IPv4IPv6で同時にアクセスできる必要があります。通常、それは問題ではありません。コンテナポートをホストポートにマップする場合。 docker-composeを介して、Dockerは使用可能なIPv6およびIPv4アドレスを使用します。

私の問題は、サーバーで使用できるIPv4アドレスとIPv6アドレスが1つだけでなく、複数あることです。 私のアプリケーションコンテナは、1つの特定のIPv4アドレスと1つの特定のIPv6アドレスのみを使用する必要がありますホスト。次のdocker-compose構文を使用して、コンテナポートをIPv4アドレスにバインドできます。

ports:
    - "127.0.0.1:8001:8001"

https://docs.docker.com/compose/compose-file/#ports を参照)

残念ながら、IPv6アドレスでそれを行う方法についての情報は見つかりませんでした。 コンテナポートをDockerホスト上の単一の固有のIPv6アドレスにバインドする方法はありますか?

2
Thomas

Docker-composeのバージョン1.15(おそらく1.14)以降、IPv6のポート定義で追加のコロンを使用できるようになりました。

version: '3.3'

services:
  app:
    image: nginx
    ports: 
    - "::1:8080:80"

関連する問題はここで見つけることができます: https://github.com/docker/compose/issues/266

3
BMitch

私の解決策は、すべてのコンテナ公開ポートを127.0.0.1にバインドしてから、HAProxyを介して外部v4およびv6IP接続を127.0.0.1に転送することです。たぶんそれを行うための最良の方法ではありませんが、私にとっての解決策です。

0
Thomas