ドッキングコンテナ


問題


私は、ネットワークコールを通して、互いに通信するために複数の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