Docker経由でこれを行うことはできませんが、ホストマシンからコンテナーの非公開ポートにアクセスできます。
ポート8000で何かが実行されているコンテナがある場合は、実行できます
wget http://container_ip:8000
コンテナのIPアドレスを取得するには、2つのコマンドを実行します。
docker ps
docker inspect container_name | grep IPAddress
内部的には、イメージを実行するとDockerがシェルでiptablesを呼び出すため、おそらくこれに対するいくつかのバリエーションが機能します。
localhostsポート8001でコンテナーのポート8000を公開するには:
iptables -t nat -A DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000
これを解決する方法の1つは、必要なポートマッピングを使用して別のコンテナーをセットアップし、iptables-saveコマンドの出力を比較することです(ただし、Dockerを介してトラフィックを強制する他のオプションをいくつか削除する必要がありました)プロキシ)。
注:これは破壊的なドッカーです。そのため、青い煙が発生する可能性があることを意識して実行する必要があります
または
もう1つの方法は、(新規?ポスト0.6.6?)-Pオプションを探して、ランダムなホストポートを使用し、それらを接続することです。
または
0.6.5では、LINK機能を使用して、既存のコンテナーと通信する新しいコンテナーを起動し、そのコンテナーの-pフラグへの追加の中継を行うことができますか?(リンクはまだ使用していません)
または
ドッカー0.11で?を使用docker run --net host ..
してコンテナをホストのネットワークインターフェースに直接接続できます(つまり、ネットは名前空間ではありません)。したがって、コンテナで開いているすべてのポートが公開されます。