2016-03-22 16 views
-1

私はマルチマシンVagrant設定を使用しています.VMの1つは、カスタムDockerfilesで構築されたいくつかのコンテナを実行するドッキングホストです。Dockerfileでドッキング・ポート・マッピングをホストするように設定できますか?

コンテナのそれぞれが異なり、いくつかのポートをホストに公開します。 docker run -pコマンドでマッピングを設定する代わりに、Dockerfileで直接ポートマッピングを強制できますか?

は例えば、Dockerfileに私が持っている:私はdocker run -Pでコンテナを実行した場合

EXPOSE 8080 

は、ドッキングウィンドウは、(私の特定の場合には役に立たない)ホストのランダムなポート上でポート8080を発行しています。ドッカーがホストの指定されたYポートにXポートを公開し、カスタムのdocker run -p Y:Xコマンドを実行する必要はありませんか?

+0

答えはいいえです。 – Auzias

+0

デプロイスクリプトはポートのイメージを検査し、必要な-pオプションをrunコマンドに渡すだけです。 –

+0

@IgorBukanov:しかし、私はVagrantのDockerプロビジョナを使用しています。これは、直接の "ドッカー実行"メソッドを持っています。必要な操作を実行するデプロイスクリプトを追加すると、Vagrantの利便性が失われます。 –

答えて

0

設計上、無駄ではありません。コンテナを複数回同時に実行できます。マッピングがドッカーファイルの一部であった場合、a)艦隊(ロードバランサ)間でこのポートを管理する方法を制御できませんb)同じホストポートにバインドしようとする複数のインスタンスに競合がありますc) 。

答えはいいえです。

+0

私は特定のケースでは「無駄」を意味しました。明らかに、ランダムなポートは他の状況では便利です。私のVagrant/Dockerデプロイメントの問題は、コンテナがどのポートにバインドされているのかを先験的に知ることができず、ネットワークがすでに設定されているVagrantfileを持つことができないということです。 –

0

docker run --net=host ...あなたの問題を解決できますが、一般的には不可能です。

関連する問題