Docker Desktopに頼らずWindowsでDockerを使う方法【WSL,Ubuntu使用】

プログラミング

Dockerは便利ですが,Windowsで使うとなると主流はDocker Desktopですよね.

しかし,そもそもDockerはLinux上で動くものなのでDocker Desktopだと不安定だったりします.さらに言うと,スペックが低いPCではそもそもDocker Desktopは機能しません.

筆者も,Docker Desktopがよく止まる時期があったので何度も再インストールしてました.

加えて,DockerはDocker Desktopを今後有料にすると発表し,個人ではなるべく使いたくないものとなってしまいました.

そこで今回は,Windows上でDockerを使う別の方法として,WSLでUbuntuを動かし,その上でDockerを動かしてみます.

つまり,仮想化の上でDockerを使うということですね.

開発環境

Windows 10です.

WSLとUbuntudディストリビューションのインストール

WSLのインストール

WSL(Windows Subsystem for Linux)とは,Windows上でLinuxを動かすためのソフトウェアです.

以下のリンクの手順に従い,WSLをインストールしていきます.

Windows 10 に WSL をインストールする
Ubuntu、Debian、SUSE、Kali、Fedora、Pengwin、Alpine などの Linux ディストリビューションを、Bash ターミナルを使用して、Windows 10 マシンにインストールする方法について説明します。

WSLを有効にする

PowerSellを管理者で開き,以下を実行します.

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

実行例

PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

...

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。

WSL 2 の実行に関する要件を確認する

WSL 2 に更新するには,マシンにいくつかの要件が必要です.

x64 システムの場合は,バージョン 1903 以降、ビルド 18362 以上が必要です.それ以外のシステムの場合は,こちらをご覧ください.

Windows ロゴ キー + R キー を押してwinverと入力し OK を選択すると,バージョンとビルド番号を確認できます.

仮想マシンの機能を有効にする

以下をPowerShellで実行します.

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

実行例

PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

...

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。

Linux カーネル更新プログラム パッケージをダウンロードする

以下をクリックして,ダウンロードします.

x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ

ダウンロードしたら,実行します.

この時点で,WSLのインストールは完了していると思います.

WSLのバージョン変更は,Ubuntuのインストールの後にします.

Ubuntuディストリビューションのインストール

こちらを参考に,WSL上にUbuntuディストリビューションをインストールします.

Ubuntu ディストリビューションをインストールする

Microsoft Store で,Ubuntu ディストリビューションをインストールします.

今回は,Ubuntu 20.04 LTSを入手→インストールします.

インストールできたら,WindowsでUbuntuを起動します.

初期起動のときは,以下のようにユーザーネームをパスワードを決めるように促されます.

Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: marumaru
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 4.4.0-19041-Microsoft x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sun Sep 12 21:05:27 JST 2021

...

これでUbuntuを用意出来ました.

WSLのバージョン変更

以下のリンクを参考に,WSLのバージョンを変更します.

WSL バージョンを変更する方法 | SEECK.JP サポート

これは,PowerShellで行います.PowerShellは管理者で起動してください.

・WSLのバージョン確認

PS C:\WINDOWS\system32> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         1

Ubuntuのバージョンが1になっていますね.これを2にします.

・WSLのバージョン変更

以下は,UbuntuでのWSLをバージョン2にする例です.

PS C:\WINDOWS\system32> wsl --set-version Ubuntu-20.04 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。

・もう一度確認

PS C:\WINDOWS\system32> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         2

Dockerのインストール

いよいよ,最後にDockerをインストールします.

Dockerのインストールは,以下のDocker公式ドキュメントを参考にします.

Install Docker Engine on Ubuntu
Instructions for installing Docker Engine on Ubuntu

以降を,Ubuntuを起動して実行します.

・apt-get のアップデートと必要なパッケージのインストール

 $ sudo apt-get update
 $ sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

・Dockerの公式GPG keyの追加

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

・Dockerのレポジトリを構築するために必要な手続き

$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

・もう一度apt-get のアップデート

$ sudo apt-get update

・Docker Engineのインストール

$ sudo apt-get install docker-ce docker-ce-cli containerd.io

Dockerを使う

Dockerのインストールが完了したので,以下のリンクを参考に,Dockerを使ってみます.

Docker Desktopに依存しない、WindowsでのDocker環境 - Qiita
もろもろの事情でDocker Desktopを使いたくなくなったため、Docker Desktop for Windows無しに、似たようなDocker環境をWindowsに構築する手順を確認しました。 (2021-09-05追記)...

・ユーザー権限

sudo usermod -aG docker $USER

$ sudo gpasswd -a $(whoami) docker
$ sudo chgrp docker /var/run/docker.sock

↑ 参考

・Docker Daemonの起動

$ sudo /etc/init.d/docker start

もしくは

$ sudo service docker start

これを実行して以下のようになれば,Dockerが使える状態になります.

$ sudo /etc/init.d/docker start
[sudo] password for ubuntu:
 * Starting Docker: docker                                                                                       [ OK ]
ubuntu@DESKTOP-UI4079P:~$

この状態になったら,以下を実行してみてください.「Hello from Docker!」と表示されれば,Dockerが正しく起動されています.

$ docker run hello-world

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

Dockerを切断するには,以下を実行します.

$ sudo service docker stop

切断した後は,「docker run hello-world」をしても以下のようなエラーが出ると思います.

docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.

参考:

Windows 10 に WSL をインストールする
Ubuntu、Debian、SUSE、Kali、Fedora、Pengwin、Alpine などの Linux ディストリビューションを、Bash ターミナルを使用して、Windows 10 マシンにインストールする方法について説明します。
Docker Desktopに依存しない、WindowsでのDocker環境 - Qiita
もろもろの事情でDocker Desktopを使いたくなくなったため、Docker Desktop for Windows無しに、似たようなDocker環境をWindowsに構築する手順を確認しました。 (2021-09-05追記)...

コメント

タイトルとURLをコピーしました