質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.48%

Ubuntu(WSL2)ホストからDockerの仮想的なブリッジ「docker0」が確認できない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 641

score 21

概要

Dockerの初学者です。ある著名な方が紹介していたウェブ上の初学者向けのDocker入門サイト(無料)で学習をしています。そのサイトに沿って途中まで順調にdockerコマンドの学習をしていました。しかし、ネットワークに関する章の部分で、「ホスト側でip aコマンドを実行すればdocker0 というネットワークの存在を確認できる」という趣旨の手順があるのですが、この通りに行かないという問題が発生しました。この部分の解決方法についてご教示いただきたく質問した次第です。

発生している問題

https://y-ohgi.com/introduction-docker/2_component/network/

こちらのウェブページ(初学者向けのDocker入門サイトの中のネットワークに関する章)に記載されている手順の中で、想定通りに行かない箇所がありました。

[ネットワークを試す > 1. デフォルトで存在するネットワークの確認]の手順に、ip aコマンドを実行すると、docker0というネットワークの存在ができると書いてあります。しかし、自分の環境では、「docker0」の存在は確認できませんでした。(ウェブページに記載されている実行結果を下記に転記しました。)

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
    link/ether 02:42:bb:3c:72:1d brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
14170: eth1@if14171: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
    link/ether 02:42:ac:12:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.3/16 scope global eth1
       valid_lft forever preferred_lft forever
14172: eth0@if14173: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
    link/ether ee:7a:0c:ea:1e:70 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.28/23 scope global eth0
       valid_lft forever preferred_lft forever

また、その直後の[2. 新しいネットワークの作成]という手順にも「docker network create myappコマンドで新しいネットワークを作成すれば、さらに追加したネットワークが表示される」という趣旨の内容が書いてありますが、こちらを実施しても何も変化なしです。

これらの原因についてご教示いただけないでしょうか?

なお、入門サイト上の問題箇所以前までの手順は、うまくいっていました。「docker pull」でイメージをダウンロードしたり、「docker run」でコンテナを生成したり、コンテナの停止・再開・削除などもできていました。

自分の環境

基本的な環境としては下記のとおりです。

マシンOS:Windows10 Pro(20H2)
ホストOS:Ubuntu20.04(WSL2)
Docker:Docker Desktop 3.5.1

また、Dockerのインストールは下記のサイトを参考にしました。
https://zenn.dev/rhene/articles/docker-desktop-for-windows-with-wsl2

WSL2は以前からすでに導入していたので、Dockerのインストールもスムーズに完了しました。
ただ、Dockerインストール後に「WSL2 Linux カーネル更新プログラム パッケージ」をインストールする手順をやっていなかったことに気が付き、後追いで実施しました。実施後、念の為Dockerを再インストールしました。

参考情報

・wslのバージョン情報

> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-20.04           Running         2
  docker-desktop-data    Running         2
  docker-desktop         Running         2

・最近までOracle VM Virtual Boxをインストールしていましたが、アンインストールしました。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

WSL2 + Docker Desktop では docker0 インタフェースはありません

参考にされた記事は Linux の場合で、Linux 版の Docker Engine をお使いであれば、 docker0 という名称のインタフェースが出ます。

一方、WSL2 と Docker Desktop を使う環境では、Linux の Docker Engine とは違い、Hyper-V のハードウェアやネットワーク仮想化の機能を使う仕組みを使われているようです(ようです、というのは、Windows 版など Docker Desktop のソースコードは一般公開されていないため、また、特にドキュメントも存在していないことかから、そのような実装になっているのだろうという想像になります)。

実際、wsl のコマンドを Windows から立ち上げると、デフォルトの Ubuntu の環境では ip a コマンドは利用できます。ただし、Linux の場合と違い docker0 はなく、そのかわりに bond0 dummy0 sit0@NONE などのインタフェースが見えます。

WSL 上の docker network create

これについては、Docker Desktop でも Linux 版でも操作などは変わりません。

「docker network create myappコマンドで新しいネットワークを作成すれば、さらに追加したネットワークが表示される」という趣旨の内容が書いてありますが、こちらを実施しても何も変化なしです。 

もしこちらが、「画面にはエラー等何も出ていないように見える」のであれば、docker のネットワーク作成はされているはずです。正常な場合、画面に英数字の文字列(ネットワークIDと呼びます)が表示されています。

docker network ls コマンドを実行すると、 docker network create コマンドで作成したネットワーク名は作成されているかと思いますので、ご確認されてみてはいかがでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2021/07/01 00:07

    zembutsuさん

    ご教示ありがとうございます。大変わかりやすく、よく理解できました。

    >docker network ls コマンドを実行すると、 docker network create コマンドで作成したネットワーク名は作成されているかと思いますので、ご確認されてみてはいかがでしょうか。

    →こちらのほうは、問題なく作成されていました。

    WSL2とLinuxの違いとは思ってもいませんでした。今後もそこら変に気をつけながら勉強を進めていきたいと思います。ありがとうございました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る