WSL(Ubuntu)にDocker環境を構築する
はじめに
WSLにDockerの環境を導入するのはDocker for Windowsでええじゃないかというお声もあるのですが、有料契約を余儀なくされた時のために自力でDocker環境を構築できるようにするための備忘録です。(ほぼ公式見たらできますが…)
WSLのインストール
以下のサイトを参考にインストールしておきます。wsl --install
だけでインストールされるんですね…
昔はWSLを動かすためにいろいろ入れていたのが懐かしい…
Dockerインストール
WSLのインストールが完了したら、まずは本題のDockerをインストールしていきます。
Docker公式に詳しく書かれているので、そちらを参考にコマンドを入力します。
まずは、パッケージの情報やインストールされているパッケージが古かったりするかもしれないので以下のコマンドで最新化します。
sudo apt-get update
sudo apt-get upgrade -y
続いて、Dockerをインストールするために必要なパッケージをインストールしていきます。
sudo apt-get install ca-certificates curl gnupg
Docker公式のGPGキーを登録していきます。
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Docker公式のGPGキーを使って、aptが参照するリポジトリを追加します。
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
追加したリポジトリの情報を取得するために、再度aptのアップデートを行いdockerをインストールします。
docker-composeもdocker-compose-plugin
をインストールするだけで使えるようになったんですね…
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
インストールが完了したら、ログインユーザーでDockerが動かせるようにdockerグループへ追加します。グループに追加した後は一度ログインしなおすこと。
sudo usermod -aG docker $USER
最後にDockerが正しく動作するか確認します。
sudo docker run hello-world
ばっちり動いていますね。
さいごに
久しぶりにDockerの環境を一から用意するといった作業を行いましたが、かなり楽になっていた印象でした。キャッチアップは欠かさず行っていこうと改めて思った1日でした。
自身がWSLをセットアップするときに使っているバッチはGitHubに保管しています。古い導入手順ですが、参考になれば幸いです。
Discussion
とても楽になったんですね。
助かりました。
1点だけ、私の環境だけかもしれませんが、
sudo docker run hello-world
するまでの何処かで、Docker Desktopを起動しておく操作が必要でした。
nakamoto さん
コメントありがとうございます!
WSLやdocker-composeのインストールがこんなに簡単になっていたのは本当に驚きでした。
貴重なご意見ありがとうございます。
差し支えなければどの操作をする時に、DockerDesktopの起動が必要になったか教えていただけると幸いです!
お忙しいところ大変恐縮ですが、よろしくお願いいたします。
sudo docker run hello-world
しようとしたらうまく行かなかったので、Docker Desktop
をWindowsメニューから起動して、sudo docker run hello-world
したら動きました。情報提供ありがとうございます!
DockerDesktop(Windows側のデーモン)に頼らない構成を作ったつもりでしたが、執筆時裏で動いていたかもしれません。
原因分かりましたら記事を更新します。