0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VSCodeでDev Container側に拡張機能が入らない原因がDockerのMTU設定だった

Posted at

環境

  • Linux(CachyOS 6.18.2-3-cachyos)
  • Docker 29.1.3
  • VSCode 1.107.1
  • ルーター:OPNsense 25.7.6 (上位ルーターあり)
  • DNS:OPNsense内のUnbound DNS
  • VXLAN利用により実効MTU1450

発生した現象

  • Dev Containers内にだけVSCode拡張機能のインストールが失敗する
  • GUIで具体的なエラーなどは出ずに拡張機能のインストールの終わらない状態が続く

一方で、以下の場合では成功

  • ホスト側の通常VSCode
  • Wi-Fi接続の場合 (上位ルーター直)
  • 別PC Windows+VPN+OPNsense内Unbound DNS

切り分け

最初はDNS、ファイアウォールやIPv6を疑いましたが、Windows + VPNでも成功するためDNS や OPNsense 自体は原因ではないと判断しました。
失敗するのは 「Linux + Docker + Dev Containers + 特定ネットワーク経路」だけという点に注目しました。

原因

DockerブリッジのMTUを確認したところ1500でした。そのため、ネットワークの実効MTUとの不整合によりDev Containerの通信のみが失敗していたようです。

$ ip link show
# 該当出力
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default

解決策

ネットワークに合わせてMTUを1450にすることで正常に拡張機能のインストールが完了するようになりました。
/etc/docker/daemon.json (デフォルトでは存在しないため新規作成)

{
  "mtu": 1450
}

Docker再起動

sudo systemctl restart docker.service

確認

MTUが1450になっていれば設定変更が成功しています。

$ ip link show
# 該当出力
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1450 qdisc noqueue state DOWN mode DEFAULT group default

この状態でDev Containerに接続し、拡張機能が正常にインストールされれば完了です。

おわりに

何らかの理由でMTUを変更している場合には同じ問題にハマる可能性がありそうです。あまり多くはないパターンかもしれませんが、Dev Containersだけ通信が不安定な場合、DNSやFirewallを疑う前にDockerブリッジのMTUを確認する価値がありそうです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?