広告

WSLのUbuntu24.04にDockerEngineをインストール。

IT

以前の記事では、「WSL」を構築し、Windowsアプリの「Docker Desktop」をインストールし、そこに「Dify」をクローン化して起動させました。

この状態では、「WSL」環境には、別途Linuxはインストールされていません。
「wsl -l -v」コマンドで確認できます。

現在は、仮想環境として「Docker Engine」のみが動作し、そのコンテナとして「Dify」が動作しています。
この状態でも、「Dify」を利用する場合には問題ありませんが、せかっくの「WSL」なので「ubuntu」環境に「Docker」を構築し、「Dify」コンテナを構築し直そうと思います。
また、windowsアプリ「Docker Desktop」は、ライセンス的に完全オープンではありませんし、「Dify」もLinuxとの組み合わせのほうが、貧弱スペックマシンでは、パフォーマンスが向上しそうな気がしています。

Docker Desktop と WSLを完全アンインストール

再度、クリーンな状態から再インストールしたい場合もあると思います
gemini君に教えてもらった、クリーンインストール方法をメモしておきます。

Docker Desktop のアンインストール

★Docker Desktopのアンインストール
1. 「設定」アプリを開く:
 Windowsキー + Iキーを押すか、スタートメニューから「設定」を選択します。
2. 「アプリ」を開く:
 「アプリ」をクリックします。
3. 「アプリと機能」を開く:
 左側のメニューから「アプリと機能」を選択します。
4. Docker Desktopを選択してアンインストール:
 アプリの一覧から「Docker Desktop」を見つけて選択し、「アンインストール」をクリックします。
 画面の指示に従ってアンインストールを完了させます。

★ 関連するファイルの削除 (オプション)
Docker Desktopのアンインストール後、残りのファイルを手動で削除することで、より完全にアンインストールすることができます。

1. 以下のフォルダを削除:
 `C:\Program Files\Docker`
 `C:\ProgramData\DockerDesktop`
 `C:\Users\<ユーザー名>\AppData\Local\Docker`
 `C:\Users\<ユーザー名>\AppData\Roaming\Docker`
2. Hyper-Vを無効化 (Docker DesktopでHyper-Vを使用していた場合):
 「コントロールパネル」>「プログラム」>「Windowsの機能の有効化または無効化」を開きます。
 「Hyper-V」のチェックボックスをオフにして、「OK」をクリックします。
 コンピュータを再起動します。
3. WSL 2を無効化 (Docker DesktopでWSL 2を使用していた場合):
 管理者としてPowerShellを開きます。
 `wsl –unregister docker-desktop`と`wsl –unregister docker-desktop-data`コマンドを実行します。
 「コントロールパネル」>「プログラム」>「Windowsの機能の有効化または無効化」を開きます。
 「Linux用Windowsサブシステム」のチェックボックスをオフにして、「OK」をクリックします。
 コンピュータを再起動します。
4. 環境変数の削除 (Docker関連の環境変数を設定していた場合):
 「システム環境変数の編集」を検索して開きます。
 「環境変数」ボタンをクリックします。
 ユーザー環境変数とシステム環境変数から、Dockerに関連する変数を削除します。
★注意点:
 上記のフォルダやファイルは、環境によって異なる場合があります。
 レジストリを編集する場合は、誤った操作をするとシステムに問題が発生する可能性があるため、注意が必要です。
 Docker Toolboxを使用していた場合は、VirtualBoxもアンインストールする必要があります。

wslを完全に削除する

★ WSLディストリビューションのアンインストール
 WSLに、既にLinuxディストリビューションがインストールされている場合、
 まず、これらを個別にアンインストールします。
1. 管理者権限でPowerShellまたはコマンドプロンプトを開きます。
2. `wsl –list –verbose` または `wsl -l -v` コマンドを実行し、インストールされているディストリビューションの一覧と名前を確認します。
3. `wsl –unregister <ディストリビューション名>` コマンドを実行します。
 例:`wsl –unregister Ubuntu-24.04`
4. 他のディストリビューションに対しても同様の手順を繰り返します。
**補足:**
 ディストリビューションをアンインストールすると、そのディストリビューションに関連付けられたすべてのデータが削除されます。
 必要なデータがある場合は、事前にバックアップしてください。
 Microsoft Storeからインストールしたディストリビューションは、通常のWindowsアプリと同様にアンインストールすることも可能です。

★WSL機能の無効化
 ディストリビューションをアンインストールした後、WSL機能を完全に無効化することもできます。
1. 「コントロールパネル」>「プログラム」>「Windowsの機能の有効化または無効化」を開きます。
2. 「Windows Subsystem for Linux」と「仮想マシン プラットフォーム」のチェックボックスをオフにします。
3. 「OK」をクリックし、コンピューターを再起動します。
**補足:**
 WSL機能を無効化すると、すべてのWSL関連機能が利用できなくなります。
 Hyper-Vを有効にしている場合は、Hyper-Vも無効にする必要があります。
**その他の注意点**
  WSL関連のファイルやフォルダが残っている場合は、手動で削除することも可能です。ただし、システムの重要なファイルを誤って削除しないように注意してください。
 レジストリを編集する場合は、誤った操作をするとシステムに問題が発生する可能性があるため、注意が必要です。

これらの手順に従うことで、WSLを完全に削除することができます。

ハードディスクのチェック

古いPCにインストールしていると、ハードディスクの調子が悪いのか?WSLが正常にインストールできない事がありました。
Windows付属のチェッカーで回復する可能性がありますので、メモしておきます。

★システムファイルチェッカー(SFC)の実行:
システムファイルの破損を修復します。
管理者権限でコマンドプロンプトを開き、
「sfc /scannow」と入力して実行。

★DISMコマンドの実行:
SFCで修復できないシステムイメージの破損を修復します。
管理者権限でコマンドプロンプトを開き、
「DISM /Online /Cleanup-Image /RestoreHealth」と入力して実行。

WSLにUbintu24.04をインストール

「Docker Desktop」と「WSL」のアンインストール方法を紹介しました。
今回は、WSLに「Ubuntu24.04」を構築し、「Docker Engine」環境を構築しますが、まだ「Docker Desktop」の環境は残しておきたいので、Windowsに新しいユーザーアカウントを作成し新しい環境で作業したいと思います。

Windows新しいアカウント作成

新しいユーザーの作成方法は、ネット上に情報がありますので、検索してみてください。
新しいユーザーでサインインし、新たに「WSL」環境を構築する場合では、こちらを参考してしてください。
新しいユーザーでサインインした初期状態では「wsl -l -v」で確認すると、なにも環境がないのがわかります。

Ubuntu24.04インストール

いよいよインストールを始めますが、2つの方法
「Microsoft Store 経由」「wsl コマンド経由」があります。
どちらでもいいと思いますが、アンインストールなどアプリの管理は「Microsoft Store 経由」のほうが簡単です

インストール自体はどちらも、簡単です。

「Microsoft Store 経由」
・Microsoft Store を開き、「Ubuntu 24.04」を検索。
・ 「入手」をクリック。
・ インストールが完了したら、「起動」をクリックします。

「wsl コマンド経由」
・PowerShell またはコマンドプロンプトを管理者権限で開く。
・「wsl –list –online」 でLinux ディストリビューションが一覧表示できる
・希望のディストリビューションをインストール
・「wsl –install -d Ubuntu-24.04」
・インストールが完了後「Ubuntu」起動

ユーザーとパスワード設定

「ubuntu」の起動は、「Microsoft Store 経由」であれば、「スタートメニュー」にアイコンが作成されています。
「wsl コマンド経由」の場合は、ターミナルを起動し「wsl」コマンドで起動できます。
「ubuntu」の最初の起動では、Unixユーザ名の作成を求められます。
特に、WIndowsユーザーと同じ必要はないので、適当なユーザー名とパスワードを設定します。

root パスワード設定

こちらでもレポートしましたが、「ubuntu」では管理権限が必要な場合には「sudo」コマンドで行い、「root」ユーザーは極力使わないを基本にしているみたいです。
したがってデフォルトでは「root」パスワードは設定されていません。
ただ、管理者権限が必要なコマンドやフォルダのアクセスなど、設定やメンテナンスの場合一回一回「sudo」を使うのは面倒です。
「root」での作業は、注意が必要ですが、管理者コマンドの連続の場合、筆者は使用しています。
その場合、筆者は「root」パスワードを設定しています。
「root」パスワードは、「sudo passwd root」コマンドで設定できます。

設定されました。
「root」になりたい時には、「su」コマンドを使用します。
「root」になると「$」プロンプトが「#」に換わります
元のユーザに戻るには「exit」コマンドを実行します。
現在のユーザーは「whoami」で確認できます。

パスワード入力なしで「sudo」を実行する

通常は「sudo」コマンドを使用しますが、いちいちパスワードを聞かれるので、結構面倒です。
パスワードなしで「sudo」を実行できる設定は「visudo」コマンドの特殊なエディターで設定します。

開いた設定ファイルに、
%sudo ALL=(ALL) NOPASSWD: ALL
この設定値を追加し上書き保存します。
この設定で、「sudo」グループのユーザーは「sudo」が実行でき、パスワードが不要になります。
ただし、「sudo」コマンドを実行できるのは、「sudoグループ」登録されているユーザーのみなので、現ユーザーを「suduグループ」に登録します。

この設定で、現ユーザーは「sudoグループ」に登録され「sudo」コマンドが実行できます。

Docker Engine をインストール

「ubuntu」を操作できるユーザー設定が完了したので、いよいよ「Docker Engine」をインストールしていきます。

古いバージョンのアンインストール

古いバージョンがインストールされている可能性がある場合には、念のため次のコマンドを実行してアンインストールしておきます

完全に削除するには、次のコマンドでボリュームやイメージデータを削除します

Docker Engine インストール手順(Ubuntu 編)

・依存パッケージのインストール

・ディレクトリを作製し、Docker の公式 GPG 鍵を追加

・Docker リポジトリを追加

・パッケージ更新&インストール

・Docker の動作確認

・dockerコマンド実行は、「sudo」 が必要ですが、実行ユーザーがdockerグループであれば、不要になります。
下記コマンドで、douckerグループに参加させます。

コンテナの削除

動作確認で「hello-world」コンテナを作製しましたが、コンテナ削除操作を覚書しておきます。

WSL、Ubuntu24.04、Docker Engine、環境完了

WSL、ubuntu、docker の環境が出来上がりました。
次に、dockerでDifyの環境をセットアップする予定ですが、windowsアプリの「docker Desktop」の場合は、ある程度アプリがやってくれそうですが、今回は「Ubuntu24.04」環境に「Docker」をインストールしたのでネットワーク環境が複雑になりそうな気がしています。

ubuntu、docker の通信状態

windows環境とwsl環境で、通信状態を調べてみます。

Windowsターミナルで、ipconfig コマンド

PS C:\Users\hogehoge2> ipconfig
Windows IP 構成
・
Wireless LAN adapter Wi-Fi:
   接続固有の DNS サフィックス . . . . .:
   IPv6 アドレス . . . . . . . . . . . .: 240f:110:2717:1:f62b:3484:aafb:ade5
   一時 IPv6 アドレス. . . . . . . . . .: 240f:110:2717:1:b1bf:2b2:5d5d:2a98
   リンクローカル IPv6 アドレス. . . . .: fe81::84c1:d56e:ece:1ad8%15
   IPv4 アドレス . . . . . . . . . . . .: 192.168.0.94
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: fe81::fab7:98ff:fe4b:95b8%15
・                                          192.168.0.1
イーサネット アダプター vEthernet (WSL):
   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: fe81::f749:f04d:c08e:932%44
   IPv4 アドレス . . . . . . . . . . . .: 172.31.224.1
   サブネット マスク . . . . . . . . . .: 255.255.240.0
   デフォルト ゲートウェイ . . . . . . .:

WindowsホストマシンIPアドレス、家庭内LAN:
192.168.0.94/24

WSL Windows側IPアドレス、WindowsとWSL間の通信するためのゲートウェイ:
172.31.244.1/20

wslで、ip a コマンド

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:c8:2e:42 brd ff:ff:ff:ff:ff:ff
    inet 172.31.226.6/20 brd 172.31.239.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe81::215:5dff:fec8:2e42/64 scope link
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether ba:b5:41:49:d7:3c brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

WSL Docker側IPアドレス、WSL環境はこのアドレスで、Windowsと通信:
172.31.226.6/20

docker0 のIPアドレス、Dockerがコンテナにネットワーク機能を提供するためにWSL 2のLinux環境内に作成するブリッジネットワークインターフェースです
172.17.0.1/16

ネットワーク環境・・複雑ですね

次回、DockerにDifyのコンテナを作成しようと思います。
LAN内でも別のPCからのアクセスもしたいので、レポートします。

コメント

タイトルとURLをコピーしました