ドッキングコンテナ
問題
私は、ネットワークコールを通して、互いに通信するために複数のDockerコンテナを必要としました.
解決策
ブリッジ&オーバーレイネットワークモードを使用する
同じDockerホストでコンテナを接続してください
ブリッジ・ネットワーク・モード-そのブリッジネットワークに接続していないコンテナから隔離を提供している間、同じ橋ネットワークに接続されるコンテナが通信するのを許します.
「ブリッジ」と呼ばれるデフォルト橋は、常にホストのすべてのコンテナの間でつくられます.
別のDockerホストにコンテナを接続する
オーバーレイネットワークモード-このネットワークは、ホスト固有のネットワークの上に座って、暗号化が有効になっているときに安全に通信するためにコンテナが接続できるようになります.
ネットワークに追加する各コンテナについては、Docker構成ファイルに次を追加します.
networks:
- local //{network_name}
ファイルの最後に次の行を追加しますnetworks:
local: // {network_name}
driver: bridge
最後に、Dockerの作成はこのようになりますlocal-redis:
image: redis
ports:
- "6379:6379"
volumes:
- redis-data:/data
networks:
- local
local-mongo:
image: mongo:3.2
command: ["mongod", "--smallfiles"]
ports:
- "27017:27017"
volumes:
- mongo-data:/data/db
networks:
- local
networks:
local:
driver: bridge
そして、これはあなたがネットワークコールを他のDockerコンテナ{container_name}:{container_port}
"mongo_url": "mongodb://local-mongo:27017/analytics"
"redis_host": "local-redis"
サイドノート
コンテナポートとホストポートは何ですか?
コンテナポートは、ブリッジまたはユーザーネットワークモードを使用するときに、コンテナ内で使用するポートです.
ホストポートは、バインドするホストマシンのポートを指定します.
Docker構成ファイルでは、このようになります.
local-application:
image: ...
ports:
- "7602:7600" //{hostPort}:{containerPort}
ドッカーコードの中でこのように呼び出すことができます"app_url": "http://local-application:7600"
外部のDocker (ブラウザから)このように呼び出すことができますhttp://localhost:7602/
参考文献
Networking Types
Docker Compose Ports
Reference
この問題について(ドッキングコンテナ), 我々は、より多くの情報をここで見つけました https://dev.to/elanchezhiyan/connect-docker-containers-2i02テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol