Dockerで複数のポートを公開するにはどうすればよいですか?


回答:


716

1つのポートのみを公開するには、次のようにする必要があります。

docker run -p <host_port>:<container_port>

複数のポートを公開するには、単に複数の-p引数を指定します。

docker run -p <host_port1>:<container_port1> -p <host_port2>:<container_port2>

4
ありがとう!ここではドキュメントでこれを見つけた:docs.docker.com/userguide/dockerlinks/...それは言うNote: The -p flag can be used multiple times to configure multiple ports.
テッドM.ヤング

構成ファイルでポートを指定する方法はありますか?たとえば、オプション--env-file
Giovanni Bitliner、2015年

8
私はまだこれにはかなり新しいですが、私はかなり確信してあなたがDockerfileにポートを定義しますよ@GiovanniBitliner EXPOSE、その後、実行docker run -P自動的DockerfileにEXPOSEで定義されたすべてのポートを公開している(大文字に注意)
テッド・エイブリー

systemdサービスファイルで複数のポートがinitプロセスを停止する可能性はありますか?
ランティ

1
ここでの正しい用語はpublishそうではないと思いますexpose
tgogos 2017

290

ステップ1

ではDockerfile、動詞EXPOSEを使用して複数のポートを公開できます。
例えば

EXPOSE 3000 80 443 22

ステップ2

次に、上記に基づいて新しいイメージを作成しますDockerfile
例えば

docker build -t foo:tag .

ステップ3

次に、を使用し-pて、上EXPOSEで定義したように、ホストポートをコンテナポートにマッピングできますDockerfile
例えば

docker run -p 3001:3000 -p 23:22

連続したポートの範囲を公開したい場合は、次のようにdockerを実行できます。

docker run -it -p 7100-7120:7100-7120/tcp 

17
EXPOSEは、公開されているポートのドキュメントであり、リンクにのみ役立ちます。ポートの完全なリストは-Pを使用して見つけることができ、それらはホスト上の利用可能なポートに自動的にマッピングされます。
Arun Gupta、

4
公開は必要ありません。最初のステップを削除するか、オプションにします。
AmirHossein 2018

27

docker-compose.ymlファイルを使用する場合:

services:
    varnish:
        ports:
            - 80
            - 6081

ホスト/ネットワークポートを指定することもできます

varnish:
    ports:
        - 80:80
        - 6081:6081

0

イメージからコンテナーを作成していて、複数のポート(公開ではない)を公開したい場合は、次のコマンドを使用できます。

container namedocker create --name --expose 7000 --expose 7001image name

これで、docker startコマンドを使用してこのコンテナーを開始すると、上記の構成済みポートが公開されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.