WSL2にDockerをインストールする方法

はじめに


WSL2環境であれば、Docker Desktop for Windowsが使えますが、ここではWSL2のUbuntu内にDockerをインストールする手順を記載しています。

手順


ほぼこの通りにやれば構築できます。

# WSLのUbuntuに入る
wsl -d Ubuntu
# 前準備
apt-get update
apt-get remove docker docker-engine docker.io containerd runc
apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
# Dockerのリポジトリを追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
# Dockerインストール
apt-get install docker-ce docker-ce-cli containerd.io
# Docker起動
service docker start
# 動作確認
docker run hello-world

参考


Install Docker Engine on Ubuntu

DockerのコンテナをエクスポートしてWSLにインポートする方法

はじめに


Dockerコンテナのエクスポート形式がtarなので、WSLにインポートできるかもしれないと思いやってみたらできました。

手順

Dockerのコンテナをエクスポート

>docker ps -a
CONTAINER ID   IMAGE                    COMMAND                  CREATED        STATUS                      PORTS                NAMES
9ef4d9e087db   getting-started          "docker-entrypoint.s…"   4 hours ago    Exited (0) 2 minutes ago                         pensive_feynman

> docker export pensive_feynman > "C:\apps\wsl\export\nginx01.tar"

WSLにインポート

>wsl --import nginx01 "C:\apps\wsl\nginx01" "C:\apps\wsl\export\nginx01.tar"
>wsl -l -v
  NAME                   STATE           VERSION
  nginx01                 Stopped         2

インポートしたWSLを起動

wsl -d nginx01 -- nginx -g "daemon off;"

nginxの起動方法はDockerのInspectで確認しました。

WSL2 – WSL起動時にsshdを起動する方法

はじめに


WSLに固定IPを割り当てたり、サービスを自動起動する方法を調べましたが、どうも通常の方法ではできないようす。

そんな時、この記事を見つけました。目からうろこ。

WSLのコマンドで、OSに対しコマンドを渡すことができるらしいです。

wslのヘルプ

wsl --help
・・・
Linux バイナリを実行するための引数:
・・・
    --
        残りのコマンド ラインをそのまま渡します。
・・・

実行方法


以下のコマンドを記述したバッチファイルでWSL起動時にSSHを起動します。

@echo off
wsl -d kali-linux -- service ssh start

参考

https://qiita.com/nashi2603/items/d0645305b137017b91b0

補足

静的IPを割当てる方法を色々試しましたが、ダメでした。

以下のようにすれば静的IPの割り当てはできるのですが、PCを再起動するとWSLのスイッチのIPが変更されてしまうためです。

@echo off
rem IPアドレスの変更だとうまくいかないので、追加している
wsl -d kali-linux -- ifconfig eth0 add 172.28.56.100 netmask 255.255.240.0 broadcast 172.28.63.255

WSLのスイッチのIPアドレス

PC再起動後

WSL2 – スナップショットを取る方法

方法1:ディストリビューションをエクスポート


こちらの手順でディストリビューションをエクスポートする

方法2:ディストリビューションが格納されているフォルダを複製


方法1で、エクスポートしたディストリビューションをインポートして使っている場合は、ディストリビューションが格納されているフォルダを複製すればよい。

補足:WSLの実体を移動したい場合


方法1のエクスポート/インポートを実施すればよい。

WSL2 – インターネットに接続する方法

wsl がインターネットに接続できない場合、以下の手順でインターネットに接続します。

設定手順

PCのWSLのネットワークに割り当てられているDNSサーバーを確認

ipconfig /all

イーサネット アダプター vEthernet (WSL):

・・・(省略)・・・
   接続固有の DNS サフィックス . . . . .:
   DNS サーバー. . . . . . . . . . . . .: fec0:0:0:ffff::1%1
                                          fec0:0:0:ffff::2%1
                                          fec0:0:0:ffff::3%1
・・・(省略)・・・

wslにログインし、resolv.conf を編集する

$ ls -l resolv.conf
  lrwxrwxrwx 1 root root 29 Jan 19 09:19 resolv.conf -> ../run/resolvconf/resolv.conf
$ sudo rm resolv.conf
$ sudo vi /etc/resolv.conf
# 追加
nameserver 8.8.8.8 # googleのネームサーバー
nameserver fec0:0:0:ffff::1%1 # PCのDNSサーバー

wsl.conf を編集する

$ sudo vi /etc/wsl.conf
# 追加
[network]
generateResolvConf = false

wsl をシャットダウンして入りなおす

 PCのコマンドプロンプトで以下を実行

wsl --shutdown
wsl -d <ディストロ名> -u <ユーザー名>

WSL2 – 1つのディストリビューションから複数のインスタンスを作成する方法

はじめに

 wsl を Microsoft Store からインストールすると、1つのディストリビューションに対し、1つのインスタンスしか利用できません。

色々試したかったり、復旧方法が分からないくらい環境が壊れてしまった時に再インストールしなければならないなど、ちょっと不便です。

それなので、1つのディストリビューションで複数のインスタンスが利用できたら便利ですね。今回はその方法を記載します。

複数インスタンス作成手順

ディストリビューション確認

wsl -l

エクスポート

wsl –export <ディストリ名> <エクスポート先のファイルパス>

wsl --export Ubuntu "C:\apps\wsl\export\ubuntu.tar"

インポート

wsl.exe –import <ディストリ名> <インストール先のフォルダパス> <インポートするファイルパス>

wsl --import Ubuntu01 "C:\apps\wsl\ubuntu01" "C:\apps\wsl\export\ubuntu.tar"

インポート結果確認

wsl -l

インスタンス起動

wsl -d Ubuntu01

Microsoft Store 経由でインストールしたディストリビューションが不要であれば、スタートメニュー→ディストリビューション右クリック→アンインストールで削除する。

参考

https://gist.github.com/stevemcilwain/24cae8d70d174c2160f06efe9fa38194

Windows クリップボード履歴の便利な使い方

目次

  1. クリップボード履歴の呼び出し方
  2. よく使う履歴をPCが再起動されても残るようにする
  3. 履歴が溜まりピン留めした履歴の選択がやりにくい場合

クリップボード履歴の呼び出し方

winキー + v

よく使う履歴をPCが再起動されても残るようにする

  • クリップボード履歴を表示して「・・・」をクリック
  • 「ピン留めする」を選択する

履歴が溜まりピン留めした履歴の選択がやりにくい場合

以下の手順で、ピン留めした履歴以外を消せます

  • クリップボード履歴を表示して「・・・」をクリック
  • 「すべてクリア」を選択する

ピン留めした履歴のみが残ります