WSL2とDockerを用いたStable Diffusion Web UIのインストールとトラブルシューティングガイド

1月 26, 2024

Stable Diffusion Web UIのDocker版をWSL2でインストールする方法

この記事では、Stable Diffusion Web UIのDocker版のインストール方法を詳しく解説します。特に、Windows Subsystem for Linux(WSL2)を使用したインストール方法に焦点を当てます。初めてWSL2を使用する方でも、この記事を参考にすれば簡単にインストールを行うことができます。

目次

1. WSL2のインストール

まずはじめに、WSL2をインストールします。WSL2は、Windows上でLinux環境を動作させることができる非常に便利なツールです。WSL2のインストールとセットアップについては、以下の記事を参考にしました。

WSL2のインストールとセットアップ: 初心者向けガイド

2. Dockerのインストール

次に、Dockerをインストールします。Dockerは、アプリケーションをコンテナという単位で実行することができるツールです。Dockerを使用することで、アプリケーションの実行環境を簡単に構築・共有・再現することができます。

以下に、Ubuntu上でDockerをインストールする手順を示します。この手順は、公式のDockerドキュメンテーションを参考にしています。

Docker公式ドキュメンテーション


# システムのパッケージリストを更新
sudo apt-get update

# HTTPSを通じてリポジトリからパッケージを取得できるようにするためのパッケージをインストール
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

# Docker公式のGPG鍵を追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 安定版のDockerリポジトリをシステムのリポジトリリストに追加
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

# リポジトリを追加したら、再度パッケージリストを更新
sudo apt-get update

# Docker CEをインストール
sudo apt-get install docker-ce

以上でDockerのインストールは完了です。インストールが正しく行われたか確認するために、「docker –version」コマンドを実行してみましょう。

3. Docker Composeのインストール

最後に、Docker Composeをインストールします。Docker Composeは、複数のDockerコンテナを一度に管理するためのツールです。Docker Composeを使用することで、複数のコンテナからなるアプリケーションの起動・停止・再起動などを一括で行うことができます。

以下に、Docker Composeのインストール手順を示します。この手順は、公式のDocker Composeドキュメンテーションを参考にしています。

Docker Compose公式ドキュメンテーション Docker Composeのリリースページ

3. Docker Composeのインストール

次に、Docker Composeのインストールについて説明します。Docker Composeは、複数のDockerコンテナを管理するためのツールで、YAMLファイルに定義した設定に基づいてコンテナを作成・管理できます。

以下に、Ubuntu上でDocker Composeをインストールする手順を示します。この手順は、公式のDocker Composeドキュメンテーションを参考にしています。

Docker Compose公式ドキュメンテーション Docker Composeのリリースページ


# Docker Composeの安定版をダウンロード
sudo curl -L "https://github.com/docker/compose/releases/download/v2.19.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# ダウンロードしたDocker Composeのバイナリファイルに実行権限を付与
sudo chmod +x /usr/local/bin/docker-compose

# シンボリックリンクを作成
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# Docker Composeのバージョンを表示
docker-compose --version

以上で、WSL上でDocker Composeをインストールする手順の説明は終わりです。この手順により、WSL環境でもDocker Composeを利用して複数のDockerコンテナを簡単に管理することが可能になります。

なお、Docker Composeのバージョンは定期的に最新状態をチェックし、新しいバージョンがリリースされていた場合は、同様の手順で更新作業を行うことをお勧めします。これは新しい機能の追加やセキュリティパッチの適用など、システムを最新の状態に保つために重要です。

4. Stable Diffusion Web UIのDocker版のインストール

ここまでで、DockerとDocker Composeのインストールが完了し、Stable Diffusion Web UIのDocker版のインストールの準備が整いました。以下の手順では、GitHubの公式リポジトリを参考に、Stable Diffusion Web UIのインストールを行います。

Stable Diffusion Web UIの公式GitHubリポジトリ


# Stable Diffusion Web UIのリポジトリをクローン
git clone https://github.com/AbdBarho/stable-diffusion-webui-docker.git

# クローンしたリポジトリのディレクトリに移動
cd stable-diffusion-webui-docker

# Docker Composeを使用してアプリケーションをビルド・実行
docker compose --profile download up --build

以上の手順により、Stable Diffusion Web UIをDockerを使用してインストール・起動することができます。なお、具体的なプロファイル名や設定はプロジェクトやdocker-compose.ymlの内容により異なるため、適宜読み替えてください。

また、どのプロファイルを選択すれば良いかわからない場合、"auto"というプロファイルを選択することが無難かもしれません。以下のコマンドは、"auto"というプロファイルを指定してDocker Composeを実行します。


docker compose --profile auto up --build

5. Stable Diffusion Web UIへのアクセス

Stable Diffusion Web UIのインストールが完了したら、次にWSLでコマンドを入力し、IPアドレスを確認します。私の場合IPアドレスは172.22.135.150でした。さらにファイヤーウォールを確認すると無効になっていたので次のURLでアクセスします。

http://172.22.135.150:7860/

以上で、Stable Diffusion Web UIのDocker版のインストールとアクセス方法についての説明は終わりです。この手順により、WSL環境でもStable Diffusion Web UIを利用することが可能になります。

6. エラーハンドリング

特定のエラーが発生した場合の対処法を以下に示します。

Dockerデーモンへの接続エラー

以下のようなエラーが発生した場合、


permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get “http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.config-hash%22%3Atrue%2C%22com.docker.compose.project%3Dwebui-docker%22%3Atrue%7D%7D”: dial unix /var/run/docker.sock: connect: permission denied

このエラーメッセージは、Dockerデーモンへの接続が許可されていないことを示しています。Dockerはデフォルトでrootユーザーのみが操作できますが、特定のユーザーをdockerグループに追加することで、rootユーザー以外でもDockerを操作できるようになります。以下の手順で対処可能です。


# 現在のユーザー(”USER_NAME”を自分のユーザー名に置き換えてください)をdockerグループに追加します。
sudo gpasswd -a USER_NAME docker

# 追加されたことを確認します。このコマンドを実行すると、ユーザーの所属グループが表示され、そこに”docker”が含まれていれば成功です。
id USER_NAME

# この設定は新しいセッションから有効となるため、一度ログアウトして再ログインする必要があります。
exit

再ログイン後、再度DockerまたはDocker Composeのコマンドを実行してみてください。以前のエラーが解消されているはずです。なお、セキュリティ上の理由から、必要なユーザーのみをdockerグループに追加することをお勧めします。

Docker Composeでのエラー

以下のようなエラーが発生した場合、


#0 6.095 07/04 11:11:57 [ERROR] CUID#7 ? Download aborted. URI=https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp310-cp310-linux_x86_64.whl #0 6.095 Exception: [AbstractCommand.cc:351] errorCode=19 URI=https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp310-cp310-linux_x86_64.whl #0 6.095 -> [AbstractCommand.cc:789] errorCode=19 CUID#7 ? Name resolution for download.pytorch.org failed:Timeout while contacting DNS servers #0 6.095 #0 6.095 07/04 11:11:57 [NOTICE] Download GID#e9d479fda44b0442 not complete: /cache/torch-2.0.1-cp310-cp310-linux_x86_64.whl #0 6.095 #0 6.095 Download Results: #0 6.095 gid |stat|avg speed |path/URI #0 6.095 ======+====+===========+======================================================= #0 6.095 e9d479|ERR | 0B/s|/cache/torch-2.0.1-cp310-cp310-linux_x86_64.whl #0 6.095 #0 6.095 Status Legend: #0 6.095 (ERR):error occurred. #0 6.098 #0 6.098 aria2 will resume download if the transfer is restarted. #0 6.098 If there are any errors, then see the log file. See ‘-l’ option in help/man page for details. ?? failed to solve: process “/bin/sh -c aria2c -x 5 ?dir /cache ?out torch-2.0.1-cp310-cp310-linux_x86_64.whl -c https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp310-cp310-linux_x86_64.whl && pip install /cache/torch-2.0.1-cp310-cp310-linux_x86_64.whl torchvision ?index-url https://download.pytorch.org/whl/cu118” did not complete successfully: exit code: 19

このエラーメッセージは、PyTorchのwhlファイルのダウンロード中に問題が発生したことを示しています。具体的には、DNSの名前解決に失敗しています。以下に対処法をいくつか挙げます。

  • 一時的なネットワーク接続の問題: このエラーは一時的なネットワークの問題が原因である可能性があります。その場合、ネットワーク接続を確認し、再度コマンドを実行してみてください。
  • DNSサーバの問題: DNSサーバーがダウンしている、または過負荷状態にある可能性もあります。別のDNSサーバーを使用してみると良いでしょう。Googleの公開DNS(8.8.8.8 または 8.8.4.4)を使用するという選択肢もあります。
  • Proxyの設定: あなたのネットワークがプロキシを使用している場合、プロキシの設定を確認する必要があります。Dockerのプロキシ設定を見直し、必要に応じて調整してみてください。
  • PyTorch公式のダウンロードリンクの問題: また、PyTorch公式のダウンロードリンクに問題がある可能性も考えられます。ブラウザで同じURLにアクセスしてみて、リンクが有効であることを確認してください。

上記のエラーが出たので、ファイルを編集することでダウンロードがうまくいきました。


sudo vi /etc/resolv.conf
# 次を記述します。
nameserver 8.8.8.8

次のYouTube動画が参考になりますので紹介させていただきます。

教育

Posted by admin