POSSEPH2

PH2 トップ / W1

Docker Desktop を入れる

このページでやること

W2 から使う Docker Desktop を自分の PC に入れて、docker run hello-world が動くところまで確かめます。Docker が何をする道具なのかは W2 で説明するので、このページでは仕組みを気にせず、手順どおりに進めてください。

所要時間は 30〜45 分ほどです。ただし PC の設定によっては再起動が何度か必要になったり、Windows では BIOS の設定まで触ることになったりするので、W2 の直前ではなく今週のうちに済ませておきましょう。

1. 自分の PC が条件を満たしているか確かめる

Mac の場合

まず、自分の Mac が Apple シリコン(M1・M2・M3 など)なのか Intel なのかを調べます。インストーラーがチップごとに分かれているので、ここを間違えると起動しません。

  1. 画面左上の Apple メニュー(りんごのマーク)から「このMacについて」を開きます。
  2. 「チップ」の欄に Apple M○ と書いてあれば Apple シリコン、「プロセッサ」の欄に Intel と書いてあれば Intel です。

ターミナルで調べることもできます。uname -m を実行して arm64 と出れば Apple シリコン、x86_64 と出れば Intel です。

uname -m

macOS のバージョンにも条件があります。公式の説明では「最新の macOS と、その1つ前・2つ前のメジャーバージョン」が対象で、新しい macOS が出るたびに一番古いものが外れていきます。同じ「このMacについて」の画面で自分の macOS のバージョンを見て、古すぎる場合は先に macOS をアップデートしてください。メモリは 4GB 以上が必要です。

Windows の場合

Windows では、Windows のバージョン、WSL 2、仮想化の3つを確かめます。WSL 2 は、Docker Desktop が Windows の中で Linux を動かすために使う Windows の機能です。

Windows のバージョン

キーボードで Windows キー + R を押し、winver と入力して Enter を押すと、バージョンとビルド番号が表示されます。公式の条件は次のとおりです。

Windows 必要なバージョン
Windows 11(64ビット) 23H2(ビルド 22631)以上
Windows 10(64ビット) 22H2(ビルド 19045)

公式の要件表に並んでいるエディションは Enterprise・Pro・Education ですが、同じページに「Home と Education では Linux コンテナだけが動かせる」という注記があります。このカリキュラムで使うのは Linux コンテナなので、Home エディションでも進められます。

ハードウェアは、64ビットの CPU、メモリ 8GB、BIOS/UEFI で仮想化が有効になっていることが条件です。

仮想化が有効か

タスクマネージャー(Ctrl + Shift + Esc)を開き、「パフォーマンス」タブの「CPU」を選ぶと、右下に「仮想化:有効」と表示されているはずです。「無効」になっていたら、後半の「よくあるつまずき」を見てください。

WSL のバージョン

スタートメニューで PowerShell を検索し、右クリックして「管理者として実行」で開いてから、次を実行します。

wsl --version

WSL バージョン: 2.x.x のような表示が出て、その数字が 2.1.5 以上なら条件を満たしています。バージョンが古い場合や、バージョン情報が表示されずに使い方の説明だけが出る場合は、次のどちらかを実行して WSL を入れ直すか更新してください。WSL がまだ入っていなければ wsl --install、入っていれば wsl --update です。終わったら PC を再起動し、もう一度 wsl --version で確かめます。

wsl --install
wsl --update

WSL の操作だけは管理者権限が必要なので、Git Bash ではなく「管理者として実行」した PowerShell で行ってください。

2. Docker Desktop をインストールする

Mac の場合

公式サイトのインストーラーを使う方法をおすすめします。Homebrew でも brew install --cask docker-desktop で入れられますが、Docker の公式ドキュメントが説明しているのはインストーラーを使う方法だけなので、つまずいたときに公式の手順と突き合わせやすいほうを選びます。なお、Homebrew の項目名は以前 docker でしたが、現在は docker-desktop に変わっています。

  1. インストールの前に、VS Code やターミナルなど、Docker を呼び出すかもしれないアプリを終了しておきます。開いたままだとコピーが途中で止まり、「Docker.app は壊れているため開けません」と表示されることがあります。
  2. Docker Desktop for Mac のインストールページを開き、自分のチップに合ったボタン(Apple silicon か Intel chip)から Docker.dmg をダウンロードします。
  3. Docker.dmg を開き、Docker のアイコンを「アプリケーション」フォルダへドラッグします。コピーが終わるまで、開いた dmg は取り出さずにそのままにしておきます。
  4. 「アプリケーション」フォルダの Docker.app をダブルクリックして起動します。
  5. Docker Subscription Service Agreement(利用規約)が表示されたら「Accept」を選びます。同意しないと Docker Desktop は動きません。

Apple シリコンの Mac では、Rosetta 2(Intel 向けのアプリを動かすための仕組み)は必須ではなくなりましたが、公式は入れておくことを勧めています。まだ入れていなければ、ターミナルで次を実行しておくと安心です。

softwareupdate --install-rosetta

Windows の場合

公式インストーラーを使い、WSL 2 で動かす設定にします。

  1. Docker Desktop for Windows のインストールページを開き、「Docker Desktop for Windows - x86_64」から Docker Desktop Installer.exe をダウンロードします。
  2. ダウンロードした Docker Desktop Installer.exe をダブルクリックして実行します。
  3. インストールの方式を聞かれたら、初期状態で選ばれている「per-user」(自分のユーザーだけに入れる方式)のまま進めます。この方式は管理者権限がなくても入れられ、公式もほとんどの人にこちらを勧めています。
  4. 「Configuration」の画面で「Use WSL 2 instead of Hyper-V」にチェックが入っていることを確かめます。PC が WSL 2 にしか対応していない場合は、この項目が出ずに自動で WSL 2 が選ばれます。
  5. 画面の指示に従って進め、「Installation succeeded」と出たら「Close」を押します。
  6. Docker Desktop はインストール直後には自動で起動しません。スタートメニューで「Docker」と検索し、Docker Desktop を起動します。
  7. 利用規約が表示されたら「Accept」を選びます。

3. 起動を確かめる

Docker Desktop を起動すると、Mac では画面上部のメニューバー、Windows では画面右下のタスクトレイにクジラのアイコンが表示されます。起動直後はしばらく準備中の状態が続くので、Docker Desktop の画面の左下にある表示が緑色の「Engine running」になるまで待ってから、次のコマンドを試してください。

コマンドを打つ場所は、Mac ならターミナル、Windows なら普段使っている Git Bash で大丈夫です。公式ドキュメントでも、WSL 2 で動かしている場合は Windows のどのターミナルからでも docker コマンドが使えると説明されています。ただし、Docker Desktop を入れる前から開いていた Git Bash では docker が見つからないことがあるので、一度閉じて開き直してから実行しましょう。

まず、docker コマンドが使えるかを確かめます。

docker --version

Docker version (数字), build (英数字) のように、Docker version で始まる1行が出れば成功です。数字は入れた時期によって変わるので、一致していなくてもかまいません。

次に、実際に小さなプログラムを動かしてみます。

docker run hello-world

初回はインターネットから必要なファイルを取ってくるため、Unable to find image 'hello-world:latest' locally や Pull complete といった行が先に流れます。そのあとに次のメッセージが出れば、Docker Desktop は正しく動いています。

Hello from Docker!
This message shows that your installation appears to be working correctly.

この下に続く英語の説明は、W2 で Docker の仕組みを学ぶときに読み返すので、今は読み飛ばして大丈夫です。

4. よくあるつまずきと対処

Windows で「Unexpected WSL error」が出て起動しない(仮想化が無効)

エラーメッセージに HCS_E_HYPERV_NOT_INSTALLED や ERROR_NOT_SUPPORTED が含まれている場合、BIOS/UEFI で仮想化が無効になっていることが多いです。タスクマネージャーの「パフォーマンス」タブで「仮想化」が「無効」になっていたら、PC を再起動して BIOS/UEFI の設定画面に入り、「Virtualization Technology」「Intel VT-x」「AMD-V」「SVM」などの名前の項目を有効にします。設定画面への入り方と項目名はメーカーによって違うので、「(PC のメーカー名と型番) BIOS 仮想化」で調べてください。

仮想化が有効なのに動かない場合は、Android エミュレーターなど一部のソフトがインストール時に、Windows 起動時の仮想化の仕組み(ハイパーバイザー)を止めていることがあります。管理者として実行した PowerShell で次を実行し、PC を再起動してください。

bcdedit /set hypervisorlaunchtype auto

Windows で WSL が古い、または入っていない

wsl --version でバージョンが 2.1.5 より古かった場合や、バージョンが表示されなかった場合は、管理者として実行した PowerShell で wsl --update(入っていなければ wsl --install)を実行し、再起動します。Microsoft Store が使えない環境では、WSL の GitHub リリースページから .msi のインストーラーを入れる方法も公式で案内されています。

管理者権限がない(大学や家族と共用の PC など)

Windows の Docker Desktop は per-user 方式なら管理者権限なしで入れられますが、WSL を入れたり更新したりするには管理者権限が要ります。大学の貸与 PC などで管理者権限がもらえない場合は、自分の PC を使うか、早めにメンターに相談してください。Mac でも、管理者でないアカウントだと Docker Desktop の更新時に管理者のパスワードを求められることがあります。

Mac で「Docker.app は壊れているため開けません」と出る

インストール中に VS Code やターミナルが Docker を呼び出して、コピーが途中で止まったときに起きます。Docker を使いそうなアプリをすべて終了し、「アプリケーション」フォルダの Docker.app をゴミ箱に入れてゴミ箱を空にしてから、dmg を開き直してもう一度インストールしてください。

Mac で「Incompatible CPU detected」と出る

チップと違うほうのインストーラーを入れてしまった可能性があります。「このMacについて」でチップを確かめ、合っているほうの Docker.dmg で入れ直してください。それでも直らない場合は、ターミナルで sysctl kern.hv_support を実行します。kern.hv_support: 1 と出れば、その Mac は Docker Desktop が必要とする仮想化に対応しています。0 と出た場合はその Mac では動かせないので、メンターに相談してください。

docker を実行すると「command not found」やデーモンに接続できないというエラーが出る

docker: command not found が出るときは、Docker Desktop を入れる前から開いていたターミナルを使っていることが多いので、ターミナルを開き直します。Cannot connect to the Docker daemon のような「つながらない」というエラーは、Docker Desktop がまだ起動していないか、起動の途中であることを示しています。Docker Desktop を開いて「Engine running」になるのを待ってから、もう一度実行してください。

Windows でウイルス対策ソフトを入れていて起動しない

一部のウイルス対策ソフトは Windows の仮想化の仕組みを独占してしまい、Docker Desktop や WSL が動けなくなることがあると公式に書かれています。上の対処をしても起動しない場合は、ウイルス対策ソフトの名前を添えてメンターに相談してください。

5. 終わったら確認すること

  • Docker Desktop を起動すると「Engine running」と表示される
  • docker --version で Docker version から始まる1行が表示される
  • docker run hello-world で Hello from Docker! が表示される
  • (Windows)wsl --version で 2.1.5 以上のバージョンが表示される

すべてにチェックが付いたら、このページの作業は終わりです。Docker Desktop は起動しているあいだメモリを使うので、使わないときは終了しておいてかまいません。W2 の初回までに、PC を再起動したあとでも Docker Desktop を開けば「Engine running」になることを一度確かめておくと安心です。

ライセンスについて

Docker Desktop は、個人での利用と教育目的での利用であれば無料です。有料になるのは従業員 250 人以上または年間売上 1,000 万ドル以上の企業や、政府機関での利用なので、自分の PC でこのカリキュラムを進める分には気にしなくて大丈夫です。

参考