注意書き

本サイトでは、アフィリエイト広告およびGoogleアドセンスを利用しています。

コンテナ内からLAN内へのpingが失敗する

インフラストラクチャ

Docker Desktop for Windows (4.32.0) を使っていて、コンテナ内からLAN内の別ホストへのpingが失敗するという症状に出遭っていました。Dockerコンテナのping話題はよく見かけますが、コンテナ内から外向きへの話題はあまり見かけないので、記載しておこうと思います。

スポンサーリンク

コンテナ内でpingコマンドを使えるようにする

コンテナ内からpingすることができない状態のものが多いと思われます。権限のことを抜きにすれば、以下のコマンドでツールをインストールが必要です。名前解決もおそらく使う場面もあるでしょうから、セットでインストールしてしまいましょう。

apt install -y dnsutils iputils-ping

動作確認

コンテナ内から、名前解決やping が通ることを確認します。

root@33090ac32867:/# ping -c4 8.8.8.8
root@33090ac32867:/# nslookup www.yahoo.co.jp

本題:LAN内にpingが通らない

今回出遭った症状が、先に挙げたコマンド例は成功するが、LAN内の物理ホストやルーターに対して、ping が成功しないというものです。WAN側の各種サーバーには到達できるのに謎です。

またWSL2上のUbuntu環境からは、このようなことは発生せず、LAN/WANどちらにもpingは成功します。

以下の対応をしてみましたが、これでは解決せずです

  • PC の再起動
  • WSLの更新
  • Docker Desktop for Windows のバージョン更新
    • 4.32.0 -> 4.34

実施した対処法

色々諦めて、以下の手順を実行したところ、ようやく環境が戻りました。

  • Docker Desktop のアンインストール
  • WSL2 のアンインストール
  • Windows 機能の無効化
  • WSL2の再インストール, Ubuntu インストール
    • インストール後、初回起動をしてユーザー設定を済ませる
  • Docker Desktop のインストール

Windows 機能の無効化について

Windowsの「設定」から「システム/オプション機能」を開き、「Windows のその他の機能」の画面を開きます。

ここで、以下の項目のチェックを外して、PCを再起動します。(チェックが外れていたらそのままでOK)

  • Hyper-V
  • Linux 用 Windows サブシステム
  • Windows サンドボックス
  • Windowsハイパーバイザー プラットフォーム
  • コンテナー

自分の場合には他のアプリケーション都合があるので、「仮想マシン プラットフォーム」は有効化したままにしています。

ソフトウェア各種を再インストールをする過程で、自動的に上記の機能が有効化設定となるので、それをアテにしています。

まとめ

とりあえず私の環境は復帰しました。検索してこのページを見たということであれば同じ問題に出遭っている貴方に、この記事が役に立つようであれば嬉しく思います。

原因など、思い当たる節など

色々と実験したり、ソフトウェアの更新をしてみたりと、環境の破損に繋がるようなことがあったのかもと思っています。

  • WSL2
    • バージョンの更新
    • networkMode が使えるようになったときの試行錯誤の影響
  • Ubuntu
    • Docker DesktopでIntegrationしているUbuntuのリセット・アンインストール

とくにIntegration しているWSL2 Ubuntuの環境をリセットした際には、dockerコマンドが使えなくなったりして、Docker Desktopを再インストールしました。復帰はできたものの、今回のようなネットワークの問題を引き起こしてしまったのではと、感じております。

コメント

タイトルとURLをコピーしました