LoginSignup
5
5

More than 1 year has passed since last update.

Windows10でWSL2(Ubuntu)でDockerを動かすためにやる事一覧

Last updated at Posted at 2021-12-26

VSCodeのRemote Containerを使っての開発が便利なのですが、
Windowsで便利に使うには少々セットアップが必要です。

具体的にはWSL上でdockerを動かせるようにする必要があります。

情報はネット上にいくらでも転がっているのですが、
WSLの固有の問題の対策とか色々忘れるので備忘録として纏めてみました。

以下お品書き。

  • WSLをインストール
  • DNSを変更する(ネットワークに繋がらない場合)
  • Dockerをインストール
  • docker composeをインストール
  • docker daemonの自動起動を設定する
  • WSLの使用メモリを制限する

WSLをインストールする

1コマンドでインストールできますが、忘れがち。

wsl --install

DNSを変更する(ネットワークに繋がらない場合)

問題なくネットワークに繋がる場合はスキップでOKです。
WSLでたまにDNSで名前解決できなくなる事があります。
詳しくはこちらの記事でまとめられております。

そんな時はpublic DNSに変更しましょう。

/etc/wsl.confに以下追記。

wsl.conf
[network]
generateResolvConf = false

/etc/resolv.conf一度削除してからDNSの設定を登録。

resolv.conf
nameserver 8.8.8.8

/etc/resolv.conf は ../run/resolvconf/resolv.conf へのシンボリックリンクになっています。
削除せずに編集しても反映されません。

Dockerをインストールする

概ねこちらの通りです。

以下の呪文を唱えて公式のDockerリポジトリから最新版をインストールします。
[2022/01/24 修正] DockerリポジトリをAPTソースに追加するコマンドが抜けておりました
[2022/03/26 追記] apt-keyが廃止予定のためdockerインストールコマンドが変更に
コメントより情報頂きました、ありがとうございました。

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) 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

sudo無しでdockerコマンド使いたい場合はユーザーをdockerグループに追加します。

sudo usermod -aG docker ${USER}
su - ${USER}

deamonの起動はsystemctlが使えないので以下のコマンドで行います。

sudo service docker start

docker composeのインストール

概ねこちらの通りです。

バージョンv2.2.2の所は適宜変更しましょう。

sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

docker daemonの自動起動を設定する

※ Windows11では/etc/wsl.confで自動起動設定可能になりました

毎回手動で起動するのも面倒なので設定しましょう。
パスワード無しでsudo service docker startできるようにsudoに設定します。
sudo visudoを実行して以下を追記。

# <username>はWSL起動時のユーザー名に変更すること
<username> ALL=(ALL:ALL) NOPASSWD: /usr/sbin/service docker start

~/.bashrcに追記

~/.bashrc
if test $(service docker status | awk '{print $4}') = 'not'; then
    sudo /usr/sbin/service docker start
fi

~/.bashrcが正常に呼ばれないことがある。
その場合は~/.bash_profileに以下のコードを追記する。

~/.bash_profile
if [[ -f ~/.bashrc ]] ; then
  . ~/.bashrc
fi

Windowsを起動したタイミングで上がってきてほしい場合はこちらの記事が参考になります。

WSLの使用メモリを制限する

かくかくしかじかでWSLが無限にメモリを確保しようとします。

こちらの記事で詳しくまとめてられております。

なので対策します。
%USERPROFILE%/.wslconfigに以下追記。
メモリサイズは調整してください。

/.wslconfig
[wsl2]
memory=4GB
swap=0

さいごに

業務上WindowsをアンインストールしてUbuntu Desktopいれるわけにもいかない場合にとても便利なWSLですが、
ちょこちょこ問題がありますね。
Windows11では改善していることを願っています。

5
5
1

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
5
5