web-dev-qa-db-ja.com

localhostからのみコンテナーにアクセスできるようにする

私はDockerエンジンをDebian Jessieにインストールしており、nginxを含むコンテナーを実行しています。 「実行」コマンドは次のようになります。

docker run -p 1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9

正常に動作します。問題は、このコンテナのコンテンツにhttp://{server_ip}:1234経由でアクセスできるようになったことです。このサーバーで複数のコンテナー(ドメイン)を実行したいので、それらのリバースプロキシをセットアップします。

コンテナーにリバースプロキシ経由でのみアクセスでき、IP:portから直接アクセスできないようにするにはどうすればよいですか?例えば。:

http://{server_ip}:1234  # not found, connection refused, etc...
http://localhost:1234  # works fine

// EDIT:明確にするために-リバースプロキシをセットアップする方法ではなく、ローカルホストからのみアクセスできるようにDockerコンテナーを実行する方法を尋ねています。

20
Pavel Štěrba

ポートマッピング で必要なホストIPを指定します

docker run -p 127.0.0.1:1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9

リバースプロキシを実行している場合、それらすべてをリバースプロキシと共にユーザー定義ネットワークに配置すると、すべてがコンテナ内にあり、内部ネットワークからアクセスできます。

docker network create net
docker run -d --net=web -v /var/www/:/usr/share/nginx/html nginx:1.9
docker run -d -p 80:80 --net=web haproxy
26
Matt

まあ、解決策は非常に単純です。127.0.0.1ポートをマッピングする場合:

docker run -p 127.0.0.1:1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9
4
Pavel Štěrba