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

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

新規登録して質問してみよう
ただいま回答率
85.48%
WSL(Windows Subsystem for Linux)

WSL (Windows Subsystem for Linux) は、Windows10のOS上でLinux向けのバイナリプログラムを実行可能にする機能です。また、WindowsOSのAPIを用いた仕組みを提供しており、Linux側からWindowsOSへのファイルアクセスもできます。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

3831閲覧

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

dissy1q84

総合スコア26

WSL(Windows Subsystem for Linux)

WSL (Windows Subsystem for Linux) は、Windows10のOS上でLinux向けのバイナリプログラムを実行可能にする機能です。また、WindowsOSのAPIを用いた仕組みを提供しており、Linux側からWindowsOSへのファイルアクセスもできます。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/06/30 07:39

編集2021/06/30 07:54

概要

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

発生している問題

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

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

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

bash

1$ ip a 21: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 3 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 4 inet 127.0.0.1/8 scope host lo 5 valid_lft forever preferred_lft forever 62: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 7 link/ether 02:42:bb:3c:72:1d brd ff:ff:ff:ff:ff:ff 8 inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 9 valid_lft forever preferred_lft forever 1014170: eth1@if14171: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 11 link/ether 02:42:ac:12:00:03 brd ff:ff:ff:ff:ff:ff 12 inet 172.18.0.3/16 scope global eth1 13 valid_lft forever preferred_lft forever 1414172: eth0@if14173: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 15 link/ether ee:7a:0c:ea:1e:70 brd ff:ff:ff:ff:ff:ff 16 inet 192.168.0.28/23 scope global eth0 17 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のバージョン情報

PowerShell

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

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/06/30 07:57

zembutsu

総合スコア1584

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dissy1q84

2021/06/30 15:07

zembutsuさん ご教示ありがとうございます。大変わかりやすく、よく理解できました。 >docker network ls コマンドを実行すると、 docker network create コマンドで作成したネットワーク名は作成されているかと思いますので、ご確認されてみてはいかがでしょうか。 →こちらのほうは、問題なく作成されていました。 WSL2とLinuxの違いとは思ってもいませんでした。今後もそこら変に気をつけながら勉強を進めていきたいと思います。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問