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のサブスクリプションとライセンスについては、下記のよくある質問に説明があります。
参考Webサイト
- Windows 上の Docker エンジン
- Install Docker Engine on Ubuntu
- Linux post-installation steps for Docker Engine
- Install Docker Engine from binaries ※今回は参照していないがWindowsにバイナリインストールする場合の手順について記載あり
今回利用する環境
- Windows 11 23H2
- WSL2上のUbuntu 22.04
- Docker Engine - Community 27.0.3
WSL2のインストールについて
Windows11にWSL2環境の用意については下記記事を参照して用意してください。
Docker Engineのインストールについて
Install Docker Engine on Ubuntu
本記事では上記手順を参照し、Ubuntu22.04にDocker Engineをインストールします。
なお、公式ドキュメントを確認するともろもろを一発でインストールしてくれるスクリプトも提供されているようですが、今回は利用しません。
Install using the convenience script
なおこのインストールスクリプトについては、本番環境での利用は非推奨となっていました。
古いバージョンの削除
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をインストールしていなかったため、対象はありませんでした。
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キーをダウンロードして適切な権限に調整
- リポジトリを追加
最新バージョンをインストール
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
本手順では上記コマンドを実行して最新バージョンをインストールしていきます。
特定バージョンをインストールする場合は、別途手順があるのでそちらを参照してインストールしてください。
hellworldを実行
sudo docker run hello-world
初回実行時はダウンロード処理が実行されたあとに、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に拡張機能をインストールしておきます。
その後、WSL2上のディストリビューションでcode .
と実行するか、Windows側でvscodeを起動してコマンドパレットからWSLへ接続を選択します。
接続すると左下にWSL: Ubuntuと表示され、WSL2 上のubuntuに接続できた事を確認できます。
あとはターミナル画面を開き(Ctrl+@)、そこでコマンドを実行します。
WSL2なubuntu上でdockerのhelloworldができました。
今回構築した環境ではWindowsコンテナは直接実行できない
dockerコンテナを利用する場合、利用するイメージが対応しているプラットフォームと動作させるプラットフォームが一致している必要があります。
今回、Windows端末を利用していますが、実態はWSL上のLinux上のdockerを利用しているため、今回の環境ではlinux/amd64なイメージが利用できます。
環境のOS/Archについてはsudo docker version
で確認できます。
Windowsコンテナ実行をためしてみる
ためしにWSL2上のUbuntuでWindowsコンテナを実行してみるとどうなるか確認してみます。
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な話もあったり。
書き出すと補足事項が多く、何もわからんで手を出すと、少しハードルが高い気もします。