iptables - ホストのポートをDockerコンテナのポートにマップします。

iptables - ホストのポートをDockerコンテナのポートにマップします。

私はAWS Elastic Beanstalk内でCentOSの派生物と考えられるAmazonの「Amazon Linux」を実行するDockerコンテナを実行しています。

私の開発環境では、私のローカルコンピュータからリモートでデバッグできるように、私のアプリケーションでデバッグを有効にしたいと思います。もちろん、これには追加のポートが必要ですが、AWSはデフォルトでDockerコンテナからホストに1つのポートのみをマップします。

私はコンピュータにあり、Dockerコンテナにローカルアドレス(172.xxx)があることがわかり、ホストにいるときにそのアドレスのデバッグポートにアクセスできます。問題はもちろん、このアドレスが私のローカルコンピュータからアクセスできないことです。

リモートデバッグ用に接続できるように<my-aws-host-ip>:<port>呼び出しを転送するポート転送ルールを手動で作成したいと思います。<docker-local-ip>:<port>私はiptablesが正しいツールだと思いますが、その使い方に慣れていません。この目標をどのように達成できますか?

ベストアンサー1

設定なしでDockerfileを作成します。たとえば、次のようになります。

//Dockerfile

FROM somePkg:1.2.3
EXPOSE 1337 8080 8081

PrivateIPではアクセスできず、PublicIPでのみアクセスできることに注意してください。これについてもう少し興味を持っている必要があります。 AWS の ElasticBeanstalk は、iptablesお客様にとって有利なルールをいくつか構築しました。このファイルを使用しない場合は、v2dockerコンテナにポートをマッピングさせる必要がありますDockerrun.aws.json

また、AWSのElasticBeanstalkは、リストの最初のポートをポート80に自動的に転送することに注意してください。

したがって、この場合external_interface:80 -> docker_container:1337

おすすめ記事