7
2

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 1 year has passed since last update.

備忘録 - WSL、Dockerの関係性について

Posted at

本記事について

備忘録
質問サイトにあった回答をほぼそのまま転記した内容

WSL

WSLはWindows上でLinuxをエミュレーションする技術です。
Linuxカーネルとは基本的なOSプログラムをパッケージ化したもので、Ubuntu、Debian、CentOSなどのLinuxディストリビューションは、そのカーネルを核としてさまざまな機能を作り上げています。
これは、中心にあるLinuxカーネルと呼ばれるものの源流が同じで、同じように動くという前提の元で成り立っている。
WSLで使うLinuxのカーネルはMicrosoftが独自にビルドしたものです。そして、WSLの根幹にはそのカーネルが動いています。

ストアでダウンロードするディストリビューション

Microsoft Storeで配布されているLinuxディストリビューションたちにはいくつか種類がありますが、UbuntuにせよFedoraにせよDebianにせよ、WSLのカーネルを使う形でインストールされます。
逆に言えば、カーネルが共通という前提であればどんなLinuxディストリビューションであっても動作が可能なわけです。

なお、WSL2はHyper-Vの技術を応用して使って動いていると思ってください。
厳密に説明すると違いますが、原理的にはHyper-Vを用いていることに変わりはないです。

Docker

DockerはLinuxのカーネルに実装されている2つの機能を組み合わせた「コンテナ技術」で成り立っています。Docker Desktop for Windowsには、「WSL2インテグレーション」という機能があり、これは言ってしまえば「WSL2が動くカーネルを用いたDockerが動く」機能です。

普通のDockerでも例えばCentOSの上でUbuntuのコンテナを動かすことができます。これはホストOSであるCentOSに使われているLinuxカーネルの力を使い、「Ubuntuを動かすために最低限必要なカーネル以外のファイルたち」をtarアーカイブにまとめた「Dockerイメージ」と呼ばれるものを展開して起動したものです。ホストOSのCentOSからみたときにはただのプロセスですが、Ubuntuは自分がUbuntu OSだと思って動いています。

Dockerイメージでいう「OS」というものはただのファイル郡です。ホストOSのカーネルの力を借りて立ち上がることでOSのような振る舞いをするだけで、Dockerfileはそのファイル群(Dockerイメージ)をどのように作成するかという手順を書いたものに過ぎません。

Docker + WSL2

Docker + WSL2の組み合わせでDockerがWSL2の上で動かすことができる(そうしない場合、Docker Desktop for WindowsはHyper-V上にLinuxマシンを作成します)

WSL上のUbuntuのカーネルの力を借りて、Debianが動く最低限のファイルシステムを展開して動かしたプロセスがDebianのコンテナです。なのでOSとしてはUbuntuしかありませんが、コンテナ自信は自分をDebianだと思い込んだようなふるまいをします。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?