1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

むかしむかし、「Windows Subsystem for Linux(WSL1)」は「Docker for Windows」と連携できなかった。

Posted at

Introduction

WSL2を調べていて、WSL2はLinuxコンテナーを実行できない、と勘違いしてしまった。

今は昔、WSL1はLinuxコンテナーを実行できなかった。
今は、WSL2はLinuxコンテナーを実行できるようになった。

What to do?

  1. Windows 10(20H1)にWSL2をインストール
  2. Docker Desktop for Windowsをインストール
  3. Windows StoreからUbuntu-20.04をダウンロード
  4. WSL2上で動いているUbuntu-20.04でLinuxコンテナーをdocker-composeでビルド&実行

調べてみた(1)

2017年時点の話。
WSL1ではLinuxコンテナーは動作出来なかった。

2017年04月28日 05時00分 公開

なお念のために言っておくと、Docker for WindowsはWindows Server 2016で利用可能できる「Windowsコンテナ」(正確には「Windows Serverコンテナ」と「Hyper-Vコンテナ」の2つ)をサポートするものではない。あくまでも「Linuxコンテナ」をサポートするものである。各コンテナの違いについては以下の記事を参照していただきたい。

「Windows Serverコンテナ」「Hyper-Vコンテナ」「Linuxコンテナ」「Docker」の違いとは?

また、Windows 10 Anniversary Update(バージョン 1607、ビルド14393)で導入された**「Windows Subsystem for Linux(WSL)」や「bash(Bourne Again Shell)」(以下の記事参照)と連携することもない。**WSL上に「apt-get install docker.io」でDocker関連のコンポーネントをインストールしようとしても一部エラーになってインストールできないし、WSL上からdockerコマンドを使って、Docker for Windowsの(Hyper-V上にインストールされている)コンテナを管理することもできない。

そうなのであれば、WSL2はDockerと連携できるのだろうか?

調べてみた(2)

  1. どうやら「WSL2で動いているUbuntu上でDockerエンジンを動かしてLinuxコンテナーを動かせるようになった。WSL1ではDockerエンジンを動かせなかった」ということだった。

WSL バージョン1では、Windows と Linux の基本的な違いにより、Docker エンジンは WSL 内で直接実行できませんでした。そのため、Docker チームは、Hyper-v Vm と LinuxKit を使用して代替ソリューションを開発しました。 ただし、WSL 2 は、完全なシステムコールの容量を持つ Linux カーネルで実行されるようになったため、Docker は WSL 2 で完全に実行できます。 つまり、Linux コンテナーはエミュレーションなしでネイティブに実行できるため、Windows と Linux の両方のツール間でパフォーマンスと相互運用性が向上します。
・・・
Windows 用 Docker デスクトップは無料で利用でき、docker 化アプリのビルド、配布、実行のための開発環境を提供します。 WSL 2 ベースのエンジンを有効にすることで、同じコンピューター上の Docker デスクトップで Linux と Windows の両方のコンテナーを実行できます。

  1. Resources > WSL INTEGRETION で
    Ubuntu-20.04を「ON」すること
    2021-06-13_1623588866.png

このDockerの設定で、WSL2上で動作しているLinux(ここではUbuntu-20.04)と連携できるようになる。

Conclusion

今(2021年6月時点)は、WSL2上でDockerを使ってLinuxとWindowsの両方のコンテナーを実行できるんだね。
という、いまさらながら理解した、という話。

しょうもない記事だが、とりあえず、私みたいに勘違いしているかもしれない人のために記録を残しておく。👍

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?