Proxy配下でWSL2 + Docker(Docker Engine)環境を構築する手順です。
対象読者
- 企業や組織等において、Proxy配下でWindowsを使ってる人
- Docker Desktopを買ってもらえない人※
- Linuxの基本操作ができる人
※Docker Desktopは従業員数250名を超える企業の商用利用では有料サブスクリプションが必要です。
環境
- Windows10 Pro 22H2(Windows10 HomeでもOK)
WSL2+Ubuntuを1コマンドで一括インストールする方法もあります。
https://learn.microsoft.com/ja-jp/windows/wsl/install
本記事では、Ubuntu 24.04LTSをインストールするため、以下を参考に一つ一つ手動で行います。
https://learn.microsoft.com/ja-jp/windows/wsl/install-manual
「ターミナル プレビュー」をインストールする
上記のmicrosoftのwslのインストール手順にも「省略可能」として記載されている「Windows ターミナル」をインストールすると便利です。
インストールする場合は、スタートメニューからMicrosoft Storeを開きで「terminal」と検索します。
「Windows Terminal Preview」をインストールします。
インストール後、スタートメニューから「ターミナル プレビュー」(以降 ターミナル
)を起動してください。
Windows の機能の有効化
スタートボタン横の検索枠に、「windows の機能の」まで入力すると、「Windows の機能の有効化または無効化」メニューが表示されるのでクリックします。
次の2つのチェックボックスをオンにします。
WSL2 を最新バージョンにする
ターミナル
から次のコマンドを入力します。
wsl --update
エラーが出て進まない場合は以下を試してみてください。
wsl --update --web-download
--web-download
は、Microsoft Store ではなくインターネットからディストリビューションをダウンロードするオプションです。
wslのコマンドやそのオプションについては、--help
で確認できます。
wsl --help
WSL2にUbuntu 24.04をインストール
インストール可能なディストリビューションは次のコマンドで確認できます。
wsl --list --online
本記事では、次のようにUbuntu-24.04
をインストールします。
wsl --install Ubuntu-24.04
インストールの最後でユーザー名/パスワードの入力を求められるので、任意に入力してください。
ここではユーザ名をuser
としています。
以降、Ubuntuのユーザ名はuser
として記述します
ターミナル
がUbuntuにログインした状態になったら、exit
と入力してUbuntからログアウトし、ターミナル
もいったん閉じてください。
Ubuntuにプロキシを設定する
ターミナル
を再起動することで、自動的にメニューに Ubuntu 24.04 LTS
が追加されるはずです。
選択してUbuntuを起動してください。
任意のエディタ(ここではnano)でホームディレクトリ(/home/user)の.bashrc
を編集します。
nano .bashrc
次のようにプロキシ設定を追加してください。
# 以下の3行をご自身の環境に合わせて変更してください
export PROXY_SVR_PORT=proxy.company.com:port
export HTTP_PROXY_USER=your_proxy_username
export HTTP_PROXY_PASS=yourp%40ssword
# for Curl
export HTTP_PROXY=http://${HTTP_PROXY_USER}:${HTTP_PROXY_PASS}@${PROXY_SVR_PORT}/
export HTTPS_PROXY=${HTTP_PROXY}
# for wget
export http_proxy=${HTTP_PROXY}
export https_proxy=${HTTP_PROXY}
# for git
git config --global http.proxy ${HTTP_PROXY}
git config --global https.proxy ${HTTPS_PROXY}
git config --global url."https://".insteadOf git://
Ctrl+Sで保存、Ctrl+Xでnanoを閉じてください。
パスワードで記号を使用している場合はURLエンコードする必要があります
下の例では、本来のパスワード「yourp@ssword」の「@」部分をURLエンコードして「yourp%40ssword」にしています
ASCII文字とURLエンコードの対応表
aptのProxy設定
「aptのプロキシ対応」 の「方法2」で設定します。
(「方法5-2」で設定すれば.bashrcの変更だけでイケるかなと思ったのですがダメそうでした)
「方法2」の通り、/etc/apt/apt.conf.d以下にproxy.conf
を作成します。
sudo nano /etc/apt/apt.conf.d/proxy.conf
proxy.conf
に以下のようにProxy設定を書き込んでください。
ここでもパスワードにはURLエンコードが必要です。
Acquire::http::Proxy "http://your_username:yourp%40ssword@proxy.company.com:port/";
Acquire::https::Proxy "http://your_username:yourp%40ssword@proxy.company.com:port/";
[任意] Host名の変更
UbuntuのHost名を変更したい場合は、以下のようにwsl.confに設定を追記してください。
ファイルを開き、
sudo nano /etc/wsl.conf
以下の2行を追記
[network]
hostname = myhostname
再起動または再ログイン
現在までの設定を反映させるため、Host名を変更した場合は「再起動」、していない場合は「再ログイン」してください。
「再起動」方法
WSL2では以下の手順でUbuntuを再起動します。
1. ターミナル
の「Windows Powershell」タブに移動し、次のコマンドでUbuntuを停止させる
wsl --shutdown
2. ターミナル
でUbuntu側のタブを選択し、Enter
キーを押下する
Ubuntu側で sudo shutdown -r
としても再起動しません
「再ログイン」方法
再ログインするには、exit
と入力してログアウトし、ターミナル
から再度Ubuntuを起動してください。
exit
Ubuntuのパッケージを最新に更新する
Ubuntuに再ログイン後、次のコマンドでアップデートすべきパッケージを最新に更新します。
sudo apt update
sudo apt upgrade
Do you want to continue? [Y/n]
と表示されたら「y」キーを押下して [Enter] してください。
Docker Engineのインストール
リポジトリをセットアップ (参考) (公式)
※パッケージリストの更新とインストールは、直前にapt updateを行っているため省略します。
1. 公式のGPGキーを保存するディレクトリを作成する
sudo mkdir -p /etc/apt/keyrings
2. 公式のGPGキーを取得する
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
3. 公式のDockerリポジトリを追加する
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4. 改めてパッケージリストを更新する
sudo apt-get update
Docker Engineをインストール
1. Docker Engine、containerd、Docker Compose をインストール
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2. インストールされたdockerのバージョンを確認
バージョン確認することで正常にdockerがインストールされたことを確認します。
docker -v
3. dockerコマンドをsudoなしで実行できるようにする
docker
グループにUbuntuインストール時に作成したユーザーを追加します。
(今回のケースでは $USER
部分は user
)
sudo usermod -aG docker $USER
4. 以下のコマンドで変更を反映させる
(上記と同じく、今回のケースでは $USER
部分は user
)
su - $USER
DockerのProxy設定
本家ドキュメント に従って以下のように設定してください。
1. Docker サービスに対応した systemd のドロップイン・ディレクトリを生成する
sudo mkdir -p /etc/systemd/system/docker.service.d
2. /etc/systemd/system/docker.service.d/http-proxy.conf
というファイルを生成して、次の手順で環境変数 HTTP_PROXY の設定を書き込む
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
【重要】
Dockerのパスワード設定だけは、URLエンコードに加えて「%」をダブルにする必要があります!
[Service]
Environment="HTTP_PROXY=http://your_username:yourp%%40ssword@proxy.company.com:port/"
Environment="HTTPS_PROXY=http://your_username:yourp%%40ssword@proxy.company.com:port/"
Environment="NO_PROXY=localhost,127.0.0.1"
3. 変更を反映するため、Docker を再起動する
sudo systemctl daemon-reload
sudo systemctl restart docker
4. 設定が読み込まれ、変更が反映したかどうかを確認する
sudo systemctl show --property=Environment docker
(Ctrl+C
で抜ける)
hello-worldで最終確認
docker run hello-world
「Hello from Docker!」を表示されていればOKです。
参考:Ubuntuのアンインストール
WSLでインストールしたディストリビューションをアンインストールするには、以下の書式でコマンドを実行します。
wsl --unregister <ディストリビューション>
したがって、Ubuntu-24.04をアンインストール(削除)したい場合は次のようにコマンドを実行します。
wsl --unregister Ubuntu-24.04
また、設定の「アプリと機能」に当該ディストリビューションが残っているため、「アンインストール」して削除しておきましょう。
参考サイト