ドッカーへの初心者ガイド(第3部)-コミュニケーションとネットワーク






私たちはDockerの基礎について学びました.また、ボリュームとは何かを見ました.今、我々のアプリケーションのニーズとどのように我々はそれを達成することができるコミュニケーションのすべての種類がDockerを使用してください.

コンテナからWWWへ
場合によっては、Dockerコンテナで我々のアプリケーションを読むためにワールドワイドウェブと通信したいと思います、例えば、我々のアプリケーションは、私たちのiframeのためのビデオを取得するためにYouTube APIを使用するか、またはWikipedia APIを使用して任意の検索ウィジェットを構築する私たちは、YouTubeやWikipediaが公開されているAPIと通信する必要があります、これは私たちはそれ以上の努力なしで行うことができます、Dockerはボックスのこれをサポートしています.

コンテナトゥホスト
我々は我々のアプリケーションは、localhost上でホストされているMongoDBと接続する必要があるとしましょう、今何を行うことができますか?どのようにコンテナ内の我々のアプリケーションは、ローカルのホストgogodbに達する?
mongoose.connect('mongodb://localhost/todo_app', {useNewUrlParser: true, useUnifiedTopology: true});
単に上記のコードを
mongoose.connect('mongodb://host.docker.internal/todo_app', {useNewUrlParser: true, useUnifiedTopology: true});

コンテナコンテナ
同じ例を取りましょう、我々のアプリケーションはMongoDBと通信したいですが、今回はホストマシンの代わりに別のコンテナでホストされています.
docker run --name mongoDb --rm -d -v data:/data/db mongo
docker container inspect mongoDb
上記のコマンドの結果から、我々はMongoコンテナのIPアドレスを見つけることができます
"IPAddress": "172.17.0.2",
接続文字列を
mongoose.connect('mongodb://172.17.0.2/todo_app', {useNewUrlParser: true, useUnifiedTopology: true});
待つのはこの唯一の方法ですか?だめ!
ネットワークdocker network COMMAND

Manage networks. You can use subcommands to create, inspect, list, remove, prune, connect, and disconnect networks.


私たちは、私たちのノードアプリケーションモンゴーDBとの交渉Mernスタックを使用して構築されたtodoアプリケーションを取ることができます.
ノードコンテナーとMongoコンテナを同じネットワークに持たせ、コンテナ名をホストのIPアドレスとして使用することができます.

docker network create todo-network
docker run \
    --name mongodb_container \
    --rm \
    -d \
    --network todo-network \
    -v data:/data/db \
    mongo
docker run \
    --name todo-node \
    -p 3030:3030 \
    --rm \
    --network todo-network \
    todo-node
mongoose.connect('mongodb://mongodb_container/todo_app', {useNewUrlParser: true, useUnifiedTopology: true});
読んでくれてありがとう!
次の記事で詳しく知る