Skip to content

DNET_DockerNetworking

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

Dockerのネットワーク設定

概要

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

詳細

NIC等

ホスト毎

ホストのNICや、ルータ、

  • 物理NIC(eth0)

    • ホストのNIC
    • ホストがVMだったら仮想NICでは?
  • Netfilter(iptables)

  • 仮想ブリッジ(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コンポーズ

Dockerコンポーズでのネットワーク指定。

links

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

depends_on

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

networks

  • 昨今、linksは、非推奨らしい。

  • ブリッジ・ネットワークを作成し、そこにコンテナを参加させる。

  • これにより、別々のDockerコンポーズ・ファイルのコンテナに接続可能になる。

    ※ 具体的には 部会メモ(OTR_MeetingMemo.md)の該当節を参照。

ホストへの接続

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

移行メモ

  • 概要の「内部通信の話(外部公開は、を使用)。」は目的語が抜けていたため、 本文中の記述(Netfilter による NAPT)に合わせて 「外部公開は、ポートマッピング(NAPT)を使用」とした。
  • 本文が無かった見出し「Dockerコンポーズ」に一文を補った。
  • 「参考」の見出しが「ホストへの接続」配下とページ末尾で重複し、 GitHub Wiki ではアンカが衝突するため、前者に「(ホストへの接続)」を補った。
  • マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への URL リンクは、移行済みの ネットワーク機器一覧 / WSL → WSL2 / Docker for Windowsのネットワーク設定 に張り替えた。
  • Open 棟梁 Wiki(opentouryo.osscons.jp)の「部会メモ」へのリンクは、 当該サイトが未移行のため予約ファイル名(OTR_MeetingMemo.md)で示し、 TODO.md に登録した。

Tags: 移行, Docker, ネットワーク設定, docker0, veth, links, depends_on, networks, Docker Compose

NetDevInfraWiki

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

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally