1
1

Windows11(WSL2)上のUbuntuにDocker EngineをインストールしてLinuxコンテナを実行してみる

Posted at

Windows環境上でDockerを利用する場合は

  • ① WindowsにDocker Desktopをインストールして利用する(Windowsコンテナ、LinuxコンテナはWSL2と連携)
  • ②Windows上のWSL2でLinux環境を用意して、その上にDocker Engineをインストールして利用する(Linuxコンテナ)
  • ③ Windows上にDocker Engineをインストール(Windowsコンテナ)

の方法がありますが、今回は②の方法でインストールを行い、Linuxコンテナを実行してみます。

Docker Desktop有償化について

環境用意としては、Docker Desktopをインストールするのが一番簡単でてっとり早いかと思いますが、

2024年7月現在、Docker Desktopが無償利用に一定の条件があるため。
今回はDocker Desktopではなく、Docker Engineをインストールして利用してみます。

なおDockerのサブスクリプションとライセンスについては、下記のよくある質問に説明があります。

Dockerに関するよくある質問

参考Webサイト

今回利用する環境

  • Windows 11 23H2
  • WSL2上のUbuntu 22.04
  • Docker Engine - Community 27.0.3

WSL2のインストールについて

Windows11にWSL2環境の用意については下記記事を参照して用意してください。

Windows 11にWSL2をインストールする

Docker Engineのインストールについて

Install Docker Engine on Ubuntu

本記事では上記手順を参照し、Ubuntu22.04にDocker Engineをインストールします。

なお、公式ドキュメントを確認するともろもろを一発でインストールしてくれるスクリプトも提供されているようですが、今回は利用しません。

Install using the convenience script

なおこのインストールスクリプトについては、本番環境での利用は非推奨となっていました。

古いバージョンの削除

Uninstall old versions

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

まずは上記コマンドで古いバージョンがインストールされている場合、こちらを削除するようです。

上記コマンドでは下記のパッケージがインストールされていたら削除しています。

  • docker.io
  • docker-compose
  • docker-compose-v2
  • docker-doc
  • podman-docker

実施している環境は以前にDockerをインストールしていなかったため、対象はありませんでした。

image.png

Dockerエンジンのインストール

Install using the apt repository

本記事ではaptリポジトリを利用してインストールしていきます。

リポジトリの登録

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

記載されているインストールコマンドを実行していきます。

これらのコマンドは下記を実施しています。

  • Docker公式GPGキーを取得するのに必要なパッケージ(ca-certificates、curl)をインストール
  • GPGキーをダウンロードして適切な権限に調整
  • リポジトリを追加

image.png

最新バージョンをインストール

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

本手順では上記コマンドを実行して最新バージョンをインストールしていきます。

image.png

特定バージョンをインストールする場合は、別途手順があるのでそちらを参照してインストールしてください。

hellworldを実行

sudo docker run hello-world

image.png

初回実行時はダウンロード処理が実行されたあとに、Hello worldなメッセージと、このメッセージがコンソールに表示されるまでの仕組みについて表示があります。

Docker ClientとDocker daemonがうまく事やって、Docker Hubからイメージをダウンロードして、コンテナを作成して実行し、コンソールに結果を表示しているようです。

dockerコマンドを非ルートユーザーで管理する場合

Manage Docker as a non-root user

本手順では実施しませんが、dockerコマンドを非ルートユーザーで管理したい場合は、上記ページにドキュメントがあります。

vscodeの拡張機能を利用してWSL2上のUbuntuにアクセスしてdocker helloworldを実行してみる

VSCodeでWSLと連携する拡張機能があったので、ここではVSCodeを利用してhelloworldコマンドを実行してみます。

vscode - WSL

VS Code と WSL 拡張機能をインストールする

まずは上記ドキュメントを参照してVSCodeに拡張機能をインストールしておきます。

その後、WSL2上のディストリビューションでcode .と実行するか、Windows側でvscodeを起動してコマンドパレットからWSLへ接続を選択します。

image.png

接続すると左下にWSL: Ubuntuと表示され、WSL2 上のubuntuに接続できた事を確認できます。

image.png

あとはターミナル画面を開き(Ctrl+@)、そこでコマンドを実行します。

image.png

WSL2なubuntu上でdockerのhelloworldができました。

今回構築した環境ではWindowsコンテナは直接実行できない

dockerコンテナを利用する場合、利用するイメージが対応しているプラットフォームと動作させるプラットフォームが一致している必要があります。

今回、Windows端末を利用していますが、実態はWSL上のLinux上のdockerを利用しているため、今回の環境ではlinux/amd64なイメージが利用できます。

環境のOS/Archについてはsudo docker versionで確認できます。

image.png

Windowsコンテナ実行をためしてみる

Windows コンテナーを実行する

ためしにWSL2上のUbuntuでWindowsコンテナを実行してみるとどうなるか確認してみます。

image.png

docker: no matching manifest for linux/amd64 in the manifest list entries.

とメッセージが表示されて、今回の環境linux/amd64で利用できない旨が表示されています。

Windows上でWindowsコンテナとLinuxコンテナを両方利用したい場合は

  • Docker Desktop for Windowsをインストールして、LinuxコンテナはWSL2との連携機能を利用する
  • Windows側にもdocker Engineをバイナリインストールする

になるかと思います。

総評

Windows上でDocker環境を構築するには、Docker Desktop for Windowsをインストールして利用するのが一番簡単な環境構築方法かと思いますが。

無償利用に制限があるため、今回はWSL2上のUbuntuにDockerエンジンをインストールしてhelloworldを実行する方法についてまとめました。

WindowsにDockerをインストールするだけのお話ですが。

Docker Desktopのライセンスの話だったり。
コンテナイメージのOS/ARCHな話もあったり。

書き出すと補足事項が多く、何もわからんで手を出すと、少しハードルが高い気もします。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1