従業員数が250人以上または、収益が1000万ドル以上の企業ではDocker Desktopを無料で使えません。
ですが、無料でDockerを使うことのできる抜け道?があるようです。
以下記事をベースに環境構築をしていきます。
Windows 10 + WSL 2 でDocker環境を構築する(Docker Desktop有料化対策)
WSL2をインストール
前提条件を確認する
- PCの
設定>システム>詳細情報>Windowsの仕様
からWindowsのバージョンを確認。-
Windows 10 バージョン 2004 以上 (ビルド 19041 以上) または Windows 11
の場合
WSL を使用して Windows に Linux をインストールする -
古いバージョンの場合
以前のバージョンの WSL の手動インストール手順
-
WSL2のインストール
上記リンクの手順に従って、WSL2をインストールする。
今回LinuxディストリビューションはデフォルトのUbuntuをインストールしている。
インストールが完了したら、PCを再起動。
-
PCを再起動したらUbuntuを起動。
ユーザの作成を求められるので適当に作成。(ここで作るユーザーはパワーユーザー的なもの。sudoコマンドが使える。)
-
Ubuntuで以下コマンドを入力。パッケージの更新とアップグレードをしておく。
sudo apt update && sudo apt upgrade
-
再度管理者権限でコマンドプロンプトを起動して、以下コマンドを入力し、WSLのバージョンが2になっているかを確認。
wsl -l -v
Ubuntuの
VERSION
が2になっており、左に*
がついていたらOK。C:\WINDOWS\system32>wsl -l -v NAME STATE VERSION * Ubuntu Running 2
Ubuntuのバージョンが1になっていた場合、2にアップグレードする。
wsl --set-version Ubuntu 2
例えばDocker Desktopをインストールしているなど、既定のディストリビューション(
*
がついているもの)がUbuntu以外の場合、変更する。wsl --setdefault Ubuntu
rootユーザのパスワード (2024/6/16 追記)
いちいちsudoをつけるのが煩わしいので軽く調べたが、よくわからなかったので適当なものに変更する。
Ubuntuで操作。
sudoをつけることでrootユーザのパスワードではなく、上で作ったパワーユーザのパスワードでrootユーザになれる。sudo su -
passwdコマンドでrootユーザのパスワードを変更。
passwd
Dockerインストール
ここからはUbuntuで作業していきます。
Install Docker Engine on Ubuntu(docker docs)の手順通りにインストールしていきます。
全部英語なので、以下にコマンド部分を抜粋して書いていきます。
また、以下の操作は上で作ったパワーユーザ(ubuntu)で操作する前提のため、すべてのコマンドの頭にsudoをつけていますが、rootユーザで操作するならsudoはなくてもいけます。
競合しそうなパッケージをアンインストール。
(多分インストールされていないと思いますが念のため。)
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
インストール
リポジトリをセットアップ
- aptがHTTPS経由でリポジトリを使用できるように更新、インストールします。
sudo apt-get install ca-certificates curl gnupg
- Dockerの公式GPGキーを追加します。
# 権限を指定しつつGPGキーをダウンロードするフォルダを作成。 sudo install -m 0755 -d /etc/apt/keyrings # GPGキーをダウンロード。 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # GPGキーの権限を変更。 sudo chmod a+r /etc/apt/keyrings/docker.gpg
- リポジトリをセットアップします。
echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Dockerをインストール
- aptを更新。
sudo apt-get update
- Docker Engine、containerd、Docker Compose をインストールします。
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- hello-worldイメージを実行して、Dockerエンジンのインストールが成功したことを確認します。
sudo docker run hello-world
パワーユーザでdockerコマンドをsudoなしで実行できるようにする。
docker
グループに今回操作に使用しているユーザー(上で作ったubuntu
)を追加する。sudo usermod -aG docker ubuntu
一旦ログアウトして、Ubuntuを再起動するとsudoなしでdockerコマンドが使用できるようになっている。
作業フォルダを同期する
特に何か設定しなくても双方からフォルダを参照することは出来るが、デスクトップやホームディレクトリから遠いので一工夫すると作業がしやすい。
①UbuntuにWindowsの作業フォルダのシンボリックリンクを作る
UbuntuからWindowsのデスクトップには/mnt/c/Users/[Windowsのユーザー名]/Desktop
でアクセスできます。
しかし、毎回この長ったらしいのを入力してフォルダ移動するのが面倒なので、Ubuntuのubuntu
ユーザーのホームディレクトリとWindowsの作業フォルダを繋げましょう。
- Windowsのデスクトップに作業フォルダ
docker
を作成。
- 以下コマンドを入力してシンボリックリンクを作成。
ln -s /mnt/c/Users/[Windowsのユーザー名]/Desktop/docker docker
-
ls -al
コマンドでシンボリックリンクが作成できているか確認。
これでUbuntuのdocker
ディレクトリとWindowsデスクトップのdocker
フォルダが同期します。
②Ubuntuの作業ディレクトリのショートカットをWindowsに作る
WidousからUbuntuのホームディレクトリには\\wsl$\Ubuntu\home\[Ubuntuのユーザー名]
でアクセスできます。
ホームディレクトリに作った作業フォルダのショートカットをWindowsのデスクトップに置いておくと便利です。
- Ubuntuの
ubuntu
ユーザーのホームディレクトリに作業ディレクトリdocker
を作成。mkdir docker
- Windowsのエクスプローラーで
\\wsl$\Ubuntu\home\[Ubuntuのユーザー名]
にアクセスし、作業ディレクトリdocker
のショートカットを作成、デスクトップ等に配置する。
余談
Ubuntuから/mnt/c/Users/[Windowsのユーザー名]/...
でWindowsにアクセスすると遅いと聞いたが、少なくともdocker compose build
が完了する速度はあんまり変わらなかった。
コマンドが実行されている間はWindowsの操作が重かったが、こちらも①と②であんまり差が無かった気がする。(こっちは体感だけど)
検索して出てくるのは主にフロントエンドのフレームワークの記事だったので、dockerはあんまり変わらないのかも。