【Docker基礎】DockerはLinuxマシンで使用する

 Docker といえば今や開発・運用に欠かせない存在ですが、実はLinux OS を前提として動作する技術です。
「えっ、でも Windows や Mac でも Docker が使えるんじゃないの?」と思う方もいるかもしれません。確かに、Windows や Mac 上で Docker を使うことは可能ですが、裏側では必ずどこかに Linux が動いています。ここでは、その理由や仕組みを解説していきます。

Docker は Linux OS が必要

 Docker はもともと Linux のカーネル機能(名前空間、cgroups など) を活用して開発されたコンテナ技術です。そのため、純粋に Docker を動かすには Linux 環境 が必要になります。

 Windows や Mac で Docker を使う場合は、表向きは Windows/Mac のアプリのように見えますが、内部的には Linux の仮想環境(WSL2 や Hyper-V、HyperKit など)を通して Docker が動作しています。

Windows や Mac で使うときの仕組み

 「Linux が必要」と聞くと、「じゃあ Windows や Mac では動かないの?」と不安になるかもしれません。ですがご安心ください。以下のような形で 裏側に Linux を組み込むことで、Windows や Mac でも Docker を扱えるようになっています。

環境仕組み
WindowsDocker Desktop for Windows をインストールすると、
WSL2 (Windows Subsystem for Linux 2) や Hyper-V 上で Linux VM が動作し、
その中で Docker Engine が稼働する。
macOS (Mac)Docker Desktop for Mac をインストールすると、
HyperKit などを利用した軽量な Linux VM を裏で動かし、
Docker Engine が稼働する。

 つまり表面的には Windows や Mac の操作感そのままで Docker コマンドを打てますが、実際には Linux 用の Docker Engine が裏で動いているわけです。

コンテナに入れるプログラムは Linux 用

 Docker コンテナに入れるプログラムは、基本的には Linux 用のバイナリ が想定されています。例えば nginxmysql のイメージを使う場合、中身は Linux 向けにコンパイルされたソフトウェアです。

 Windows や Mac 上で Docker を使うときは、うっかり「自分の OS 用のプログラムをそのまま持ち込める」と思いがちですが、実際は Linux 上で動くプログラム が入っています。

Docker でよく使う基本コマンド

 ここであらためて、Docker を操作するときの代表的なコマンドを見ておきましょう。どの OS でも同じコマンドを使いますが、その裏では Linux 用の Docker Engine が動いています。

コマンド説明実行例
docker pull <イメージ>DockerHub などのリポジトリから イメージをダウンロード する。
ローカルに無いイメージを初めて使いたいときに実行。
docker pull ubuntu
(Ubuntu イメージを取得)
docker imagesローカルにある Docker イメージの一覧を 表示 する。docker images
docker run <イメージ>イメージから新規にコンテナを作成&起動する。
イメージが無ければ自動で docker pull し、その後コンテナを起動。
docker run -d -p 80:80 nginx
(nginx コンテナを起動)
docker ps起動中のコンテナ一覧を 表示 する。
-a オプションで停止中のコンテナも含めて一覧できる。
docker ps -a
docker stop <コンテナID> / <コンテナ名>指定したコンテナを 停止 するコマンド。docker stop webserver
docker rm <コンテナID> / <コンテナ名>停止中のコンテナを 削除 するコマンド。docker rm webserver
docker rmi <イメージ名>イメージを 削除 するコマンド。docker rmi ubuntu

ポイント

  • docker run は「(イメージ取得 →)コンテナ起動」の流れを一度に行う便利なコマンド
  • -d:バックグラウンド起動
  • -p 80:80:ホスト 80 番ポートとコンテナ内の 80 番ポートをマッピング

まとめ

  • Docker は Linux カーネルの技術を活用 しているため、動かすには必ず Linux OS が必要
  • Windows や Mac であっても、裏側に仮想マシンや WSL2 などを用いて Linux 環境 を用意している。
  • コンテナ内のプログラムは基本的に Linux 用 のものが想定されており、Windows / Mac のネイティブバイナリが動くわけではない。

 Linux が必須と聞くと一見ハードルが高そうですが、Docker Desktop といった公式ツールを使えば、Windows や Mac でも違和感なく Docker を扱えます。
 実際に各 OS 環境で Docker をセットアップする方法や注意点については、3章の「Dockerを使ってみる」で詳しく解説していきますので、ぜひ引き続き学んでみてください。