# Stable Diffusion mit der UI von Automatic1111 Das ist die Dockerfile: ```dockerfile # PART 1: GPU support einrichten! # Wir nutzen ein Image von NVIDIA FROM nvidia/cuda:12.2.0-runtime-ubuntu20.04 ENV DEBIAN_FRONTEND noninteractive # Lege für später Variablen für einen non-root User fest (mit fester UID zur besseren Zuweisung) ENV NB_USER="gpuuser" ENV UID=999 # Install essential packages RUN apt-get update && apt-get install -y \ python3.8 \ python3-pip \ python3.8-dev \ python3.8-distutils \ gcc \ g++ \ curl \ wget \ sudo \ git \ && rm -rf /var/lib/apt/lists/* # Installiere hier PyTorch mit GPU support (Versionen können angepasst werden) RUN python3.8 -m pip install --upgrade pip \ torch==2.0.1\ torchvision==0.15.2 # Erstellen eines non-root Users RUN useradd -l -m -s /bin/bash -u $UID $NB_USER # Arbeitsverzeichnis festlegen WORKDIR /app # PART 2: Stable Diffusion WebUI von Automatic1111 installieren RUN echo "Etc/UTC" > /etc/timezone RUN sudo apt-get update RUN sudo apt-get install -y python3.8-venv RUN sudo apt-get install -y libgl1-mesa-glx RUN sudo apt-get update -y RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install libglib2.0-0 RUN git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git RUN pip install -r /app/stable-diffusion-webui/requirements.txt RUN chown -R gpuuser:gpuuser /app/stable-diffusion-webui # und zum non-root User wechseln USER ${NB_USER} RUN chmod +x /app/stable-diffusion-webui/webui.sh # Starte die Konsole wenn wir den container starten CMD ["/bin/bash", "-c", "cd /app/stable-diffusion-webui && bash webui.sh --listen"] ``` Wir nutzen das Image folgendermaßen: ```shell docker run --gpus all -p 7860:7860 -v /pfad/auf/host:/pfad/im/container -it sdgpu ``` So nutze ich in Summe 5 volumens um verschiedene Dateien von außen bearbeiten zu können. (Getestet unter Windows.) ``` -v C:\Users\User\Desktop\temp2\sdtest\outputs\:/app/stable-diffusion-webui/outputs/ -v C:\Users\User\Desktop\temp2\sdtest\models\:/app/stable-diffusion-webui/models/ -v C:\Users\User\Desktop\temp2\sdtest\embeddings\:/app/stable-diffusion-webui/embeddings/ -v C:\Users\User\Desktop\temp2\sdtest\extensions\:/app/stable-diffusion-webui/extensions/ -v C:\Users\User\Desktop\temp2\sdtest\log\:/app/stable-diffusion-webui/log/ ``` Der Pfad auf dem Host muss natürlich angepasst werden. So ist z.B. ein Beispielstart: ```shell docker run --gpus all -p 7860:7860 -v C:\Users\User\Desktop\temp2\sdtest\outputs\:/app/stable-diffusion-webui/outputs/ -v C:\Users\User\Desktop\temp2\sdtest\models\:/app/stable-diffusion-webui/models/ -v C:\Users\User\Desktop\temp2\sdtest\embeddings\:/app/stable-diffusion-webui/embeddings/ -v C:\Users\User\Desktop\temp2\sdtest\extensions\:/app/stable-diffusion-webui/extensions/ -v C:\Users\User\Desktop\temp2\sdtest\log\:/app/stable-diffusion-webui/log/ -it sdtesting ``` Es wurde alles getestet unter: - Windows 10 x86 - Desktop Docker v4.18.0 - Nvidia Driver 537.13 - Cuda Version 12.2 - Grafikkarte: NVIDIA GeForce GTX 1080 Ti *Notiz für Unraid nutzer:* Damit man eigene Images von seinem Privaten repository auf seinem Server nutzen kann, sollte man seine Registry entweder mit einem Zertifikat versehen oder man fügt seine Registry zu den ```insecure-registries``` hinzu. ```shell $ nano /boot/config/docker.cfg DOCKER_OPTS="--insecure-registry YOUR_REGISTRY_IP:YOUR_REGISTRY_PORT" $ /etc/rc.d/rc.docker restart ```