記事を書いた背景
チームでの開発を今後行う上で欠かせないDockerの基礎を身に着けるべく、「開発系エンジニアのためのDocker絵とき入門」という本をベースに勉強をしております。しかし、仮想化技術を意識して使ってこなかったことから、Dockerのインストールの段階で「何をしているのか、なぜその操作を行うのか」がイメージできていませんでした。やっとのことで腹落ちしたので、同じ疑問を持った方向けに共有したいと思ったことが背景になります。
この記事を読んで何がわかるか?
- Dockerのインストールが終わった段階の全体像
- 「指示通りやったけどこれ何してるの?」という人へ
- LinuxとUbuntuとWSL2って何?
- 違いや関係性を意識せず使ってきた人へ
- どうやってDockerが動いているか
- Windows~Dockerコンテナまでのつながりを再整理したい人へ
LinuxとUbuntuとWSL2の整理
複雑になりがちな要素を整理します。
Linuxとは
WindowsやmacOSなどのOSの一種で、オープンソースなOSになります。狭義のLinuxはLinuxカーネルを指し、広義のLinuxはLinuxカーネルと周辺のソフトウェアのことを指します。この広義のLinuxは別名でディストリビューションと呼ばれます。このディストリビューションの一種にUbuntuがあります。
Ubuntuとは
誰にでも使いやすいOSをコンセプトに開発されたLinux系のOSです。様々な機能があり、触りやすいという観点で選ばれているらしいです。詳しくは参考にリンクを載せているので気になったら覗いてみてください。ここでは、UbuntuとLinuxの関係性が理解できればよく、視覚的に以下の画像でまとめておきます。
WSL2とは
WSL2(Windows Subsystem for Linux)はWindouw上でLinux仮想マシンを起動し、Linuxディストリビューションを実行できるようにする技術です。これを導入すれば、WindowsでLinuxのコマンドを操作できるようになります。Windows、Ubuntu、WSL2の関係性を図示すると以下のようになります。
Dockerのインストール
インストールの詳細な流れは他の記事や書籍を参照してください。
Docker Desktop
これは、WindowsやmacOSでDockerを扱うためのGUIアプリです。これをインストールすると、ホストOSと同じアーキテクチャのLinuxカーネルもインストールされます。起動時には裏でLinux仮想マシンの起動を行ってくれるので、慣れていないユーザにとっては良いツールになります。しかし、Dockerコマンドでコンテナを操作することを目的としておいている方は、別のセッティングが必要になるらしいです。
では、コマンドで操作する人のセッティングは?
PowerShellでは一部使えないLinuxコマンドが存在するので、WSL2でUbuntuを実行し、BashでDockerを操作できるようにする必要があります。この方法は、WSL2のUbuntuでBashを使えば完全なLinux互換が得られるというメリットがあると「開発系エンジニアのためのDocker絵とき入門」で紹介されていました。
要は、コマンドでコンテナを操作したい場合は、PowerShellだと動かせないLinuxコマンドがあるから、別でUbuntuの仮想マシンを作り、Bashを使おうということです!
物理マシンからDockerまでの全体像
GUIで操作する場合はDocker Desktopを入れるだけでよく、CUIの場合はLinuxディストリビューションとWSL2を使うという点で違いがあります。
これでつながりが理解できました!