1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL2:もっと!docker-cliのインストール手順決定版はこれだ(Windows11/Ubuntu24.04)

Last updated at Posted at 2024-10-01

このページの手順でできること

  • WSL2(systemd有効)を利用できる
  • docker-cliをインストールできる
  • コンテナを実行できる

早速やってみよう

WSL2のインストール

開始する前に:前提条件を確認する

  • 前提条件
    • Winsows11(22H2以降、最新のUpdate適用済)であること
    • 「仮想化」が有効であること(タスクマネージャーから確認可能)
    • 使用するUbuntuのバージョンが24.04以降であること
    • 組織内プロキシによるアクセス制限がないこと(全体公開版の手順では範囲外)
  • 「仮想化」が有効になっていない場合
    • 物理PCの場合、UEFIの設定から「VT-x」あるいは「Intel Virtualization Technology」を有効にする
    • クラウドIaaS環境の場合、入れ子になった仮想化が有効なインスタンスタイプを選択する

image.png

事前準備:user-data(cloud-init定義ファイル)の配置

以下のファイルを、%USERPROFILE%\.cloud-init\Ubuntu-24.04.user-data に保存する

cat .cloud-init/Ubuntu-24.04.user-data
配置場所確認コマンド(配置内容が出力されていたら正しい)
# powershell起動直後に下記を実行
cat .cloud-init/Ubuntu-24.04.user-data
ファイル内容(クリックして展開)
Ubuntu-24.04.user-data
#cloud-config

write_files:
  - path: /etc/apt/keyrings/docker.asc
    content: |
      -----BEGIN PGP PUBLIC KEY BLOCK-----
      
      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
      YT90qFF93M3v01BbxP+EIY2/9tiIPbrd
      =0YYh
      -----END PGP PUBLIC KEY BLOCK-----
    owner: root:root
    permissions: '0644'

package_update: true
package_upgrade: true

apt:
  #http_proxy,https_proxyを設定する
  #http_proxy: http://[[user][:pass]@]host[:port]/
  #https_proxy: https://[[user][:pass]@]host[:port]/
  #当初のsources.listを保持する
  preserve_sources_list: true
  sources:
    docker.list:
      source: deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $RELEASE stable

packages: [docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin, docker-compose-plugin]

#タイムゾーンとLocaleの設定
timezone: Asia/Tokyo
locale: en_US.UTF-8

runcmd:
  # ここでdocker infoする必要はないが、runcmdがないとcloud-initの処理が進まない。
  # 
  - docker info

groups:
  - docker

# can't support wsl provider.
# system_info:
#   default_user:
#     groups: [docker]

WSL2の有効化

WSL2が既に有効の場合は、省略可能。

# WSL2を有効化する。まだUbuntuをインストールしない。
wsl --install --no-distribution
wsl --update

# Microsoft Storeが使用できない場合、--web-downloadオプションを付ける。
# wsl --install --no-distribution --web-download

WSL2(Ubuntu24.04)のインストール

# Ubuntuをインストール。cloud-initの初期化時間を設けるために --no-launchをつける
wsl --install --distribution Ubuntu-24.04 --no-launch
# ubuntuを初期化する。必ずrootユーザーで行う。
ubuntu2404.exe install --root
# --format jsonオプションはつけてはならない。
ubuntu2404.exe run cloud-init status --wait

# Microsoft Storeが使用できない場合、--web-downloadオプションを付ける。
# wsl --install --distribution Ubuntu-24.04 --web-download --no-launch

結果の判断は、doneに要した時間と....................の数で行う。

成功 失敗 エラー
doneが表示されるまでの時間が長い doneが一瞬で表示されてしまう errorが表示されてしまう
image.png image.png image.png

|

万一エラーになった場合、下記の方法で登録解除する

wsl --unregister Ubuntu-24.04

その後、wsl --install --distribution Ubuntu-24.04 --no-launchからやり直す

dockerを動かそう

hello worldを実行してみる

下記のコマンドでWSLを開始する

ubuntu2404.exe

WSLを起動後、以下のコマンドでdockerのコンテナを実行できる

docker pull docker.io/library/hello-world
docker run docker.io/library/hello-world
想定出力
Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

組織内プロキシによるアクセス制限がかかっている場合、systemdとdockerに別途設定が必要
設定を変更しなかった場合、docker.io(dockerhub)に接続できないため docker pullできない

参考資料

Microsoft公式:WSL2のインストール方法

docker公式:dockerのインストール方法

cloud-init公式:WSL チュートリアル

cloud-init公式:cloud-init による自動セットアップ

ubuntu公式:cloud-init による自動セットアップ

qiita:Docker DesktopなしのDocker環境をWSL2とcloud-initで構築する

Debian 12 Cloud Init Docker Server

補足:過去のインストール手順と比較した改善ポイント

前バージョンの手順と比較すると、下記の差異がある。

  • 手順の短縮
    • cloud-initにより作業ステップを短縮
  • Ubuntu24.04時点で自明となった手順を削除
    • systemdの有効化について
    • gpgのascii形式に関する説明
1
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?