Docker

Docker Desktopを使わずにWSL2上でDockerを使用する方法

Docker Desktopを使わずにWSL2上でDockerを使用する方法
naoki-hn

Docker Desktop を使わずに WSL2 上の Linux で Docker を使用する方法を解説します。

Docker

Docker は、アプリケーションを軽量なコンテナとしてパッケージ化し、実行するための仮想環境です。これにより開発環境や本番環境など異なる環境間での一貫した動作が可能となります。

この記事では、Docker Desktopを使わずにWSL2上のLinuxでDockerを使用する方法について紹介したいと思います。

Docker Desktop

Docker Desktop は、簡単にインストールできるアプリケーションです。Docker Desktop は、従業員数が 250 人以上 または 年間収益が 1,000 万ドルを超える組織では、有料サブスクリプションが必要です。

ただし、以下のような条件に当てはまる場合は、無料で使用することができます。

  • 従業員数が 250 人未満 かつ 年間収益が 1,000 万ドル未満の組織
  • 個人のプロジェクトでの利用
  • 教育目的での利用(学生や教育者によるもの)
  • 非商用のオープンソースプロジェクトでの利用

上記条件に当てはまらない企業の場合で無償で Docker を使用したい場合には、Docker Desktop を使わない方法を検討する必要があります。

Docker を無償で使用する方法

Docker Desktop は上記の通り企業規模により有料サブスクリプションが必要になります。しかし、有料であるのは Docker Desktop であり、そのエンジンである Docker Engine 自体は無償で使用することができます。

つまり、Linux 環境や WSL2(Windows Subsystem for Linux 2)上で Docker Engine をインストールして使用する分には問題ありません。

以降では、Windows 11 環境を前提として、WSL2 上の Ubuntu で Docker を動作させて使用する方法を紹介していきます。

Docker Desktop を使わずに WSL2 上で
Docker を使用する

WSL2 で Ubuntu をインストールする

WSL2(Windows Subsystem for Linux 2)は、Windows 上で Linux 環境を動作させることができる環境です。

コマンドプロンプトで、以下コマンドを実行することにより、WSL のインストールと Ubuntu のインストールを同時に実行することが可能です。

wsl --install -d Ubuntu

上記でインストールを完了すると Windows の検索で「ubuntu」が見つかるようになり、実行すると Ubuntu のターミナルが表示され、Ubuntu 環境を使用できるようになります。

WSL2 Ubuntu Windows11

以下のコマンドで Ubuntu のバージョンを確認できます。今回の例では、Ubunt24.04.1 LTS となっています。

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04.1 LTS
Release:        24.04
Codename:       noble

WSL関連のコマンドは以下を参考にしてください。

【WSLのアップデート】

WSL をアップデートします。既に環境が入っている人はアップデートしておくことを推奨します。

wsl --update

【WSL環境のリストアップ】

WSL で使える環境を確認します。デフォルト環境は*がつきます。

wsl -l -v

【実行バージョンの変更】

WSL の実行バージョンを 2 に変更します。<ディストリビューション名> の部分には対象の環境名を指定してください。

wsl --set-version <ディストリビューション名> 2

【デフォルトバージョンの設定】

以降作成される環境のデフォルトを Version 2 に設定します。

wsl --set-default-version 2

Ubuntu 上に Docker をインストールする

Ubuntu のターミナルで以下を実行することで Docker 環境をインストールします。

Ubuntuパッケージの更新

Ubuntu 自体のパッケージを更新しておきます。

sudo apt update

Docker Engine のインストール

Docker のインストールスクリプトを実行します。インストールスクリプトに関する説明は Docker の公式ドキュメントのこちらを参考にしています。

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

スクリプトにスリープが入っていますので、しばらく待ってもらえると実行が進んでいきます。完了したら Docker のインストールが完了です。

以下のコマンドで、Docker のサービスが実行されているかを確認してください。

sudo systemctl status docker

実行状態が、active(running) になっていれば Docker は起動しています。起動していないようであれば以下コマンドで実行してください。

sudo systemctl start docker

PySpark 環境を使ってみる

上記で WSL2 上の Ubuntu 環境に用意した Docker で PySpark の Docker 環境を使用してみましょう。

PySpark は、Apache Spark という分散データ処理フレームワークを Python で利用できるようにする API です。Spark は分散環境なのでローカル環境の用意は大変ですし、クラウド環境では課金が生じます。このような時にローカルで PySpark 環境が準備できると非常に便利です。

PySpark の Docker 環境を使う方法については「PySparkの実行環境をDockerで用意する方法」に詳細に説明をしています。この記事は Docker Desktop を前提にしていますが、今回作成した環境でも同様に実行できることを確認します。

Docker イメージの取得と実行

作成した ubuntu 環境のターミナルで以下コマンドで実行し、Docker Hub からPySpark を使用できる Jupyter Notebook 環境のイメージを取得します。

docker pull jupyter/pyspark-notebook

コンテナの作成と実行

以下のコマンドを実行することで PySpark の環境を起動することができます。

docker run --rm -it -p 8888:8888 -p 4040:4040 -v /mnt/d/docker1/pyspark_notebook_1:/home/jovyan/work jupyter/pyspark-notebook

コンテナが起動するとターミナルの表示の中に「http://127.0.0.1:8888/lab?token=xxxxxxxxxx」というような記載の文字列が表示されるかと思います。この URL をブラウザに入力することで Jupyter Lab を実行することができます。

WSL2 Docker Jupyterlab

なお、WSL2 上の Ubuntu では /mnt/c//mnt/d/ に C や D ドライブがマウントされます。上記実行時には /mnt/d/docker1/pyspark_notebook_1 と指定しましたので、Jupyter Lab の work フォルダに作成されたファイルは D:\docker1\pyspark_notebook_1 フォルダ内に保存されます。

wsl.conf の修正(NTFSファイルシステムとの権限に関する問題)

上記環境構築をした際に PySpark のプログラムを動かすとファイルの書き込みに関するコードが失敗する事象が発生しました。NTFS ファイルシステムにおけるファイルの書き込み権限が原因でファイル操作が失敗したようです。

上記のような問題は ubuntu 環境の /etc/wsl.conf ファイルに以下の記載を追記すると改善します。

[automount]
options="metadata"

automount セクションは WSL が Windows のファイルシステムを自動的にマウントする際のオプションを設定するためのものです。通常 WSL2 は /mnt/c/mnt/d のようにドライブごとに自動マウントします。

metadata オプションは、Windows ファイルシステム上のファイルに対して Linux のメタデータ(所有者、権限情報など)を保存できるようにするもので、Linux の権限モデル(chmodchown など)を Windows ファイルシステムで扱えるようにします。

上記変更をした際には、以下で WSL を一度シャットダウンし、再度 ubuntu 環境を立ち上げ直してください。

wsl --shutdown

まとめ

Docker Desktop を使わずに WSL2 上の Linux で Docker を使用する方法を解説しました。

Docker Desktop は一定規模以上の企業では有料サブスクリプションが必要となるため、Docker Desktop を使用しないで実行できる環境があると非常に便利です。Windows 環境上の場合は、WSL2 上に Ubuntu を構築して Docker Engine をインストールすることで実現ができます。

この記事では一連の環境準備の方法について紹介しました。Docker 環境構築の参考にしていただければと思います。

あわせて読みたい
【Python Tech】プログラミングガイド
【Python Tech】プログラミングガイド
ABOUT ME
ホッシー
ホッシー
システムエンジニア
はじめまして。当サイトをご覧いただきありがとうございます。 私は製造業のメーカーで、DX推進や業務システムの設計・開発・導入を担当しているシステムエンジニアです。これまでに転職も経験しており、以前は大手電機メーカーでシステム開発に携わっていました。

プログラミング言語はこれまでC、C++、JAVA等を扱ってきましたが、最近では特に機械学習等の分析でも注目されているPythonについてとても興味をもって取り組んでいます。これまでの経験をもとに、Pythonに興味を持つ方のお役に立てるような情報を発信していきたいと思います。どうぞよろしくお願いいたします。

※キャラクターデザイン:ゼイルン様
記事URLをコピーしました