• Windows Subsystem for Linuxガイド 第35回 WSL2でDockerを使う その1

今回は、WSLでDockerを利用しコンテナを使う方法を解説する。原則、Dockerを使う場合には、WSLディストリビューションは、WSL2でなければならない。WSL1のディストリビューションでは、Dockerなどのコンテナ技術を使うことは原則できない。

WSLでDockerを使う場合、大きく2つの方法がある。1つは、WSLディストリビューションで通常のLinuxと同じく、Docker Engineをインストールしてdocker cli(Command Line Interface。dockerコマンド)経由で使う方法だ。この方法は、WSL上で動くという以外、LinuxでのDocker利用とほとんど違わない。ただし、WSL2環境自体がWindowsのコンテナーの中での動作なので、ネットワーク設定が異なることがある。

もう1つは、Win32側に「Docker Desktop」をインストールして利用する方法だ。この場合、GUIアプリケーションであるDocker Desktopは、Win32側で動作するが、コンテナーは、専用のWSLディストリビューション内で実行される。

なお、過去には、Hyper-Vを使う「Windowsコンテナ」をdockerコマンドで利用する方法が、Microsoftから発表された(現在でも利用可能)。このWindowsコンテナは、Dockerコンテナとは異なるものだが、仮想マシン内でLinuxを動作させることで、Dockerコンテナを利用することも可能だった。DockerとMicrosoftは技術的な提携を行い、dockerhubなどにも「Windowsコンテナ」が公開されている。

Windows側でWindowsコンテナが有効なら、Docker DesktopでもWindowsコンテナを扱うことができる。しかし、WindowsコンテナとLinux用のDockerコンテナ自体は、操作コマンドが同じというだけで、中身はまったく異なる。Microsoftのサイトやインターネットにある過去の記事などには、Windowsコンテナの話が少なくない。一見、Dockerコンテナの話と区別が付かないことがあるので注意されたい。ここでは、Linux上で動作するDockerコンテナとその利用についてのみ話を行う。また、ここでは、Dockerについての基本的な理解を持つユーザー向けの解説を予定している。

Docker DesktopとDocker Engine

前述のようにWSLでDockerを使うには、WSLディストリビューション上にDocker Engineを、インストールする方法(以下Dockerエンジンと表記)と、Docker Desktop(以下Dockerデスクトップと表記)の2つがある。基本的な部分では、どちらも同じことができるが、相互に異なる部分がある(表01)。

  • ■表01

Dockerエンジンは、本来のdockerの使い方といえる。これに対して、Dockerデスクトップは、Windows向けの新しいDockerの使い方である。

Dockerエンジンがコマンドやコンテナの実行が、Linux内(WSLディストリビューション)内で閉じているのに対して、Dockerデスクトップでは、GUIアプリやdockerコマンドの実行は、Win32側で行い、コンテナーの実行だけWSLを利用する。

なお、Dockerデスクトップは、イメージやコンテナの管理と、実行と結果表示などをGUIで扱うことができる。コンテナーやイメージの作成、変更に関しては、テキストファイル編集やdockerコマンドを使うため、基本的な使い方はそれほど大きく変わらない。

Dockerデスクトップのインストール

Dockerデスクトップは、通常のWindowsアプリケーションの形態をしているため、Windowsアプリケーションのようにインストールすればよい。ただし、すでにWSL2を有効にしている必要がある。

DockerデスクトップのページからDockerデスクトップをダウンロードする。原稿執筆時点では、「Mac用のダウンロード ウィンドウズ」という表記になっている。これがWindows版のダウンロード用リンクである(心配なら英語版ページにある“Download for Windows”リンクを使う)。

Exeファイルをダウンロードしたら、これを実行すれば、インストールが完了する。完了後にはWindowsの再起動が必要になる。

途中、“Configuration”という画面(写真01)がでるが、デフォルトのままOKで先に進んで問題ない。インストールの終了時に“Close and restart”ボタンが表示される(写真02)。これを押すとWindowsが再起動する。

  • 写真01: Dockerデスクトップのインストールでは、WSL2上のコンテナを優先するかなどの設定ページが表示される。ここはOKボタンで先に進んでかまわない

  • 写真02: インストールが終了すると、このようなウィンドウが表示される。中央の「Close and restart」ボタンを押すとWindowsが再起動する。Dockerデスクトップのインストールを完了するには再起動が必須

再起動後、Dockerデスクトップを起動すると、サブスクリプションの同意画面がでる。そのあと、Dockerデスクトップのユーザー登録、サインイン画面となる。ユーザー登録やサブスクリプション加入は任意である。

先に進むとDockerデスクトップの起動画面になる(写真03)。基本的には、これでインストールは終了だ。なお、Dockerデスクトップは、インストールしたユーザーは、自動的にDockerグループに登録されるため、昇格時に管理者パスワードを要求されない。

  • 写真03: ユーザー登録画面などのあと、このような画面になったらDockerデスクトップが起動している

動作の確認は、Dockerデスクトップ左側から「Images」を選び、「Search images to run」ボタンを押す。image検索画面がでるので、ここで検索欄に「hello」と入力して、「hello-world」を選び「Run」ボタンを押して実行する(実行前に確認あり)。最後に実行のログ(写真04)が表示されればDockerデスクトップは正常に動作している。なお、同じことは、PowerShellのウィンドウを開き、以下のコマンドを実行してもよい(写真05)。


docker run hello-world
  • 写真04: Dockerデスクトップでhello-worldイメージを実行させる。このようなLog画面が表示されれば、Dockerデスクトップは正常に動作している

  • 写真05: PowerShellのウィンドウを開き、dockerコマンドを使ってもコンテナを実行できる

Dockerデスクトップは、docker cliを含んでいるため、細かい操作は、コマンドラインから行うことができる。

次回は、DockerエンジンをWSLディストリビューションに直接インストールし、WSLネットワーク設定とDockerのネットワーク設定に関して解説を行う予定だ。

> Windows Subsystem for Linuxガイド 連載バックナンバー
https://news.mynavi.jp/tag/winsubsystem/