.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

  • 内部通信の話(外部公開は、を使用)。
  • linksを使っているサンプルが多いが、昨今、非推奨らしい。

詳細

NIC等

ホスト毎

ホストのNICや、ルータ、

  • 物理NIC(eth0)
    • ホストのNIC
    • ホストがVMだったら仮想NICでは?
  • Netfilter(iptables)
    • ファイアウォールやルータ
    • NAPT(ホストの8080 → コンテナの80)
  • 仮想ブリッジ(docker0)
    • Dockerがデフォルトで作成する仮想スイッチ
    • NetfilterとコンテナのNICとを繋いでいる。

コンテナ毎

コンテナのNIC

  • 仮想NIC(veth xxx)
    • Veth pair (Virtual ethernet tunnel pair)
    • Linux には、OpenVZ由来の Virtual Ethernet Tunnel (veth) というものがある。
      名前が示す通り、仮想的な Ethernet Interface の組を作成して、繋いでくれる。
  • 仮想NIC(eth0)
    • コンテナのNIC
    • veth xxxとペア。

Dockerコンポーズ

links

  • [サービス名](または[エイリアス名])でコンテナにアクセスできる。
  • version2ではDockerコンポーズ・ファイルに書かれた全てのサービス間に
    自動的にリンクを張る仕様になったため、linksとわざわざ書く必要がなくなった。

depends_on

  • depends_onはコンテナの作成順序と依存関係を決める。
  • version2で自動リンクされるので、depends_onだけでOKに。

networks

  • 昨今、linksは、非推奨らしい。
  • ブリッジ・ネットワークを作成し、そこにコンテナを参加させる。
  • これにより、別々のDockerコンポーズ・ファイルのコンテナに接続可能になる。

※ 具体的にはコチラ

ホストへの接続

rootに設定する。

必要に応じて、Dockerコンポーズ・ファイルに以下を追加する。

environment:
  GRANT_SUDO: "yes"
user: root

※ 後のデバッグ・ツールをインストールする場合の権限がないので。

コンテナに入る。

  • 起動(例)
    $ docker-compose up
  • コンテナ一覧
    $ docker ps
    CONTAINER ID  IMAGE  COMMAND  CREATED  STATUS  PORTS  NAMES
    ...
  • コンテナのターミナルに入る。
    $ docker exec -it [ContainerID] /bin/bash

ホストOSのIPアドレスを取得する。

# cat /etc/hosts | awk 'END{print $1}' | sed -r -e 's/[0-9]+$/1/g'

※ Windowsの場合、素のWSL2とDocker Desktop for WSL2で、挙動が違う。

※ 旧 Docker for Windowsでどうだったか?は不明。
  その昔は、「10.0.75.1 (DockerNAT)」だった気がするが、その後、また、色々と変わった。

pingやncやcurlでアクセスしてみる。

  • コマンドをインストールする。
    • ping
    • curl
  • ホストOSのネットワークに、
    • pingする。
    • ncやcurlでアクセスしてみる。

参考

参考

  • 【連載】世界一わかりみが深いコンテナ & Docker入門
    〜 その5:Dockerのネットワークってどうなってるの? 〜 | SIOS Tech. Lab
    https://tech-lab.sios.jp/archives/20179

Qiita

マイクロソフト系技術情報 Wiki

Docker for Windowsのネットワーク設定


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-10-13 (水) 18:20:43 (2d)