tkhrsskの日記

技術ネタなど

Windows(WSL2)でdockerを動かすまで

ポイント

  • WSL2にアップデートする

ステップ

  • WSL2にする
  • WSL上にUbuntuをいれる
  • Docker公式サイトをもとにaptリポジトリ追加とインストール

毎回WSL2にするのを忘れてはまる。

手順

あとで書く

WSL インストール

管理者としてPowerShellを起動して下記でWSLをインストール

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Ubuntuのダウンロード

curl.exe -L https://aka.ms/wslubuntu2204 -o ~\Downloads\Ubuntu.appx

パッケージにUbuntu追加

Add-AppxPackage ~\Downloads\Ubuntu.appx
wsl --list --online
wsl --install -d ディストロ名

WSL2 移行

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

もしかしたら下記も必要かも

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

下記 Linux kernel update package のダウンロード&インストール https://learn.microsoft.com/en-us/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package

ディストロ名の確認

wsl -l -v

WSL2化

wsl --set-version ディストロ名 2

カーネルアップデート

wsl --shutdown
wsl --update
Docker インストール
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
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
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
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world

Dockerデーモン起動していなかったら

sudo service docker start
sudo docker run hello-world

ユーザ権限でも実行したい場合

sudo usermod -aG docker `whoami`

シェル再起動

Proxy関連

環境変数 (~/.bashrc にいれておく)

export HTTP_PROXY=http://user:pass@proxyserver:8080
export HTTPS_PROXY=http://user:pass@proxyserver:8080

/etc/apt/apt.conf

Acquire::http::Proxy "http://user:pass@proxyserver:8080";
Acquire::https::Proxy "http://user:pass@proxyserver:8080";

Dockerデーモン /etc/default/docker

export no_proxy='export no_proxy=127.0.0.1,localhost,xxx.xxx.xxx.xxx'
export NO_PROXY="${no_proxy}"
export http_proxy='http://user:pass@proxyserver:8080/'
export HTTP_PROXY="${http_proxy}"
export https_proxy='http://user:pass@proxyserver:8080/'
export HTTPS_PROXY="${https_proxy}"

Dockerクライアント ~/.docker/config.json

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://user:pass@proxyserver:8080",
     "httpsProxy": "http://user:pass@proxyserver:8080",
     "noProxy": "127.0.0.0/8,172.16.0.0/16"
   }
 }
}

参考