1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Windows PC上にWSL2+Dockerの環境を構築

Posted at

はじめに

最近ではDockerの利用はもう当たり前になってきましたね。ですが、Docker Desktop for Windowsはライセンスが有償化してしまったこともあり、ライセンスを購入したりクラウドに環境立てたりするほどではないけど、ちょっとした調査検証や開発はローカルPCでささっとやってみたいというケースはよくあると思います。私の会社の貸与PCは基本Windowsなので、WSL2でUbuntuの環境を用意してそこでDockerを動かすことにしました。

システム環境

  • PC: Windows 10 or 11
  • WSL2: Ubuntu 20.04

構築手順

1 WSL2の環境準備

Ubuntu20.04のインストール

Windows Powershellを管理者モードで開き、以下のコマンドを実行します。

Powershell画面
wsl --install -d Ubuntu-20.04

Ubuntu 20.04 LSTというウインドウが起動するので、ユーザ名とパスワードを入力します。(ちなみにこの記事の中ではユーザ名をubuntuとしています。)

WSL2のネットワーク関連設定

ネットワーク関連の設定が一番厄介でした。WSL2を再起動したら設定が変わっていてインターネットへアクセスできなくなったりとか。いろいろ試しましたが、私は下記の方法で設定しました。

/etc/resolv.confファイルを削除して、空ファイルを再作成します。

sudo rm /etc/resolv.conf
sudo touch /etc/resolv.conf

一旦Powershell画面でWSLをシャットダウンする。

Powershell画面
wsl --shutdown

WindowsのスタートメニューからUbuntu 20.04 LSTを起動し、以下のコマンドを実行します。

sudo rm /etc/resolv.conf

sudo tee /etc/resolv.conf <<EOF
nameserver 8.8.8.8
EOF

/etc/wsl.confファイルを新規作成します。

Windows10ユーザーの場合

sudo tee /etc/wsl.conf <<EOF
[network]
generateResolvConf = false
EOF

Windows11ユーザーの場合

Windows11を利用している場合、wslを再起動すると/etc/resolv.confが自動的に消されてしまう現象がみられます。その回避策ため、次のコマンドを実行します。

sudo tee /etc/wsl.conf <<EOF
[network]
generateResolvConf = false

[boot]
command="echo 'nameserver 8.8.8.8' > /etc/resolv.conf"
EOF

インターネット接続できるかどうかを確認します。

host google.com

2 Ubuntuの初期設定

以降は、Ubuntuへの各種設定、インストールになります。

  • Docker、Docker Composeをインストールします。その他Pythonや、私が仕事でよく利用するAWS CLIなども一緒にインストールしています。
  • WSL起動時にDocker daemonが起動するように設定しています。
# パッケージの更新
sudo apt update
sudo apt -y upgrade

# タイムゾーンの設定
sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

# Dockerインストール
sudo apt -y install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release \
    zip

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
"deb [arch=amd64 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 update
sudo apt -y install docker-ce docker-ce-cli containerd.io

# DockerComposeのインストール
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

sudo usermod -aG docker ubuntu
sudo service docker start
sudo service docker status

# AWS CLIインストール
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
rm awscliv2.zip
rm -r ./aws

# sudoパスワード省略設定
sudo visudo
### visudoの画面が表示されるので、最終行までスクロールした後、次の1行を追記する。
ubuntu ALL=NOPASSWD: ALL
### 追記後、`ctrl+o`、`Enter`、`ctrl+x`で保存・終了する。

# ~/.bashrcを読み込むための設定
tee -a ~/.profile <<EOF

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

# Dockerの自動起動設定
tee -a ~/.bashrc <<EOF

if test \$(sudo service docker status | awk '{print \$4}') = 'not'; then
    sudo service docker start
fi
EOF

# pythonインストール
sudo apt update
sudo apt install -y --no-install-recommends \
    python3-dev \
    python3-venv \
    python3-pip
sudo apt clean && sudo rm -rf /var/lib/apt/lists/*
sudo ln -s /usr/bin/python3 /usr/bin/python
python -V

3 開発環境の整理

その他、アプリの初期設定をします。

  • gitの設定(git config --globalコマンド)
  • AWS CLIの設定(aws configureコマンド)
  • Python仮想環境の作成(python -m venvコマンド)
  • VSCode環境の準備
    ローカルPCのVSCodeで、拡張機能のRemote - WSLをインストールします。
    その後、Ubuntu 20.04 LST画面で以下のコマンドを実行すると、新たなVSCodeが起動します。
    code .
    
    新たに起動したVSCodeにはローカルPCのVSCodeに入っている拡張機能はインストールされていない状態なので、必要なものを手動でインストールします。

おわりに

今のところこの環境でも問題なく作業できています。

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?