2016-09-09 12 views
6

私は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:ちょうど明確にする - 私は、セットアッププロキシを逆にする方法を尋ねるが、どのように唯一のローカルホストからアクセスできるようにドッカーコンテナを実行しないようにしています。

答えて

11

あなたがリバースプロキシを行っている場合port mapping

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

に必要なホストIPを指定しますリバースプロキシと一緒にユーザ定義のネットワーク上にそれらをすべて配置したい場合は、すべてがコンテナにあり、内部ネットワーク上でアクセス可能です。

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 
+0

自動リバースプロキシを実行するには、https://github.com/jwilder/nginx-proxyも参照してください。 – kwerle

2

まあ、解決策は、あなただけのポートをマッピングする際127.0.0.1を指定する必要があり、非常に単純です:

docker run -p 127.0.0.1:1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9 
関連する問題