2016-11-29 7 views
8

ドッカースタックを設定して実行する方法については、最近読んでいます。しかし、私が常に欠けていることの1つは、特定のコンテナをどのようにセットアップするかは、ドメイン名を使ったアクセスに対応し、docker DNSを使用するコンテナ名だけではありません。 users.mycompany.com、それはIその後、ユーザーのAPIにドッカーでコンテナにドメイン名を割り当てる方法

を処理しているmicroserviceコンテナに通過します:私は何を意味

は、たとえば、私が外部からアクセス可能であるmicroserviceを持っていると言うことであり、 customer-list.mycompany.comにアクセスしようとすると、それは顧客リストを扱っているマイクロサービスコンテナに行きます。

もちろん、ドッカーのDNSを使って私はそれらをアクセスしてドッカーネットワークにリンクできますがコンテナへのコンテナにアクセスしたいが、コンテナへのインターネットへのアクセスは望んでいない。

どのように私はそれを行う必要がありますか?またはそれを設定する最善の方法。

答えて

9

したがって、ホストからのポート経由でコンテナのポートにアクセスできるように、ポート公開の概念を使用する必要があります。セットアップがMYHOSTするusers.mycompany.comをリダイレクトしますnginxのから、簡単なproxy_passこれをすることができますあなたがすることができます使用:1337(をあなたは1337にあなたのポートを公開している場合)

だから、あなたがこれを行うにしたい場合は、あなたは使用して、特定のポートを公開する設定にあなたのコンテナが必要になります:あなたは、あなたのホストからローカルホストをカールすることができます

docker run -d -p 5000:5000 training/webapp # publish image port 5000 to host port 5000 

:5000をコンテナにアクセスすること。

curl -X GET localhost:5000 

あなたが前にセットアップするためにドメイン名を使用する場合は、あなたがproxy_passあなたのコンテナに自分のホスト名にできますWebサーバのインスタンスを持っている必要があります。 nginxの中

すなわち:

server { 
    listen 80; 
    server_name users.mycompany.com; 
    location/{ 
    proxy_pass http://localhost:5000; 
    } 
} 

私はthis tutorialに従ってください、そして多分私が知っているすべてのためにdocker run reference

0

をチェックするためにあなたを助言する、ドッカーは、箱から出して、この機能を提供していません。しかし確かにいくつかの回避策があります。実際には、コンテナを区別してダイナミックIPのドメイン名を解決するDNSをホストに展開する必要があります。

  1. 展開ドッカー対応のDNSソリューションの一部を(私はあなたがSkyDNSv1/SkyDockを使用することをお勧め);:だから、してみてくださいを与えることができます

  2. このDNSを使用するようにホストを設定します(デフォルトでは、SkyDNSはコンテナを名前で知っていますが、ホストは認識しません)。

あなたがステップ#2をスキップして、あまりにも容器内部のブラウザを実行することができます(おそらくスキームcontainer_name.image_name.dev.skydns.localを使用します)明示的な--hostnameを使用してコンテナを実行します。ホスト名でWebアプリケーションコンテナを検出します。

関連する問題