Ich versuche, meinen Webbrowser (Zen Browser) zu „dockerisieren“. , weil ich es sehr nützlich finde, getrennte Instanzen davon zu haben, um den Zweck der einzelnen Instanz besser zu unterscheiden und zu privatisieren.
Ich habe Docker mit sudo pacman installiert -S docker und aktivierte dessen systemctl Service. Ich habe mich auch zu seiner Benutzergruppe hinzugefügt, um zu vermeiden, dass bei jedem Befehl immer „sudo“ verwendet wird.
Ich habe alles getan, damit meine NVIDIA-GPU funktioniert, sodass „--gpus all“ ordnungsgemäß funktioniert und die Standardlaufzeit für Docker „nvidia“ ist.
Ich habe erfolgreich eine erste Webbrowser-Instanz eingerichtet, dann habe ich beschlossen, mit allen anderen fortzufahren, also habe ich die Schritte wiederholt ...aber es ist nicht gut gelaufen, ich habe einen seltsamen Fehler erhalten, der möglicherweise mit den Berechtigungen zusammenhängt.
Ich habe eine Datei namens „ Dockerfile' in "/home/Containers/Browsers/TLXS/Zen Browser/" mit den Anweisungen zur Bilderstellung.
Code: Select all
FROM archlinux:latest
# Install dependencies
RUN pacman -Syu --noconfirm && \
pacman -S --noconfirm \
libx11 libxrender libxtst gtk3 tar alsa-lib alsa-utils pipewire pipewire-alsa
# Set working directory to the mounted host directory
WORKDIR "/home/Containers/Browsers/TLXS/Zen Browser"
# Run the browser binary when the container starts
CMD ["./zen/zen-bin"]
Code: Select all
docker run -it --gpus all --name tlxs_zen-browser -v "/home/Containers/Browsers/TLXS/Zen Browser:/home/Containers/Browsers/TLXS/Zen Browser:rw" -e NVIDIA_DRIVER_CAPABILITIES=all -e DISPLAY=$DISPLAY -e XDG_RUNTIME_DIR=/tmp -v /tmp/.X11-unix:/tmp/.X11-unix -v /run/user/1000/pipewire-0:/tmp/pipewire-0 tlxs_zen-browser
Code: Select all
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: exec: "./zen/zen-bin": stat ./zen/zen-bin: no such file or directory: unknown.
Eigentlich ist die Datei „/zen/zen-bin“ da, und das kommt mir seltsam vor, weil ich Ich habe das schon einmal gemacht und es hat funktioniert! Dies ist die Ausgabe des Befehls ls -l, im Grunde die gleiche Ausgabe, die ich erhalte, wenn ich ihn im Ordner der ersten Instanz mit denselben Berechtigungen ausführe auf die aufgelisteten Dateien angewendet:
Code: Select all
total 4
-rw-r--r-- 1 371 Dockerfile
drwxr-xr-x 1 912 zen
Warum heißt es, dass es keine Datei „/zen/zen-bin“ gibt, wenn die Dockerfile-Anweisungen mit denen im anderen Ordner identisch sind? Auch die Datei „/zen/zen-bin“ befindet sich an derselben Position!
TL;DR
Das Konzept:
Meine Idee ist, so etwas wie Sandboxie nachzubilden. Plus-Boxen (Sandboxie-Plus ist eine Sandbox-Umgebungs-App für Windows, in der Sie für jede von Ihnen erstellte Box Folgendes erhalten: ein dedizierter und isolierter Ordner, auf den Sie zugreifen und dessen Dateien anzeigen können).
Ich habe in meinem Verzeichnis „/home/“ einen Ordner „Container“ erstellt und darin dann einen Ordner namens „Browser“ – es handelt sich um die „Box“ für den Hauptbrowser Instanz- und einen Ordner „Browser“, in dem ich alle verschiedenen „Boxen“ für andere Browserinstanzen erstelle.
Die Felder lauten also „Browser“ in "/home/Containers/" und „TLXS“, „BFTW“, „GDSV“ usw. (umgangssprachliche 4-stellige Namen). ) in *"/home/Containers/Browsers/".
/home/Containers/
---Browser
------Zen Browser
---Browser
------TLXS
---------Zen Browser
------BFTW
---------Zen Browser
------GDSV
---------Zen Browser
Ich hätte gerne alle Dateien der App, die ich dockerisiere, direkt dort in diesen Ordnern meines Dateisystems verfügbar und vollständig zugänglich, aber im Moment war ich dazu nicht in der Lage Mach das. Sie werden irgendwie ausgeblendet, wenn ich das Dateisystem mit dem Dateimanager durchsuche.
Was ich bisher gemacht und gearbeitet habe:
- setze meine Position im Terminal auf "/home/Containers/Browser/Zen Browser"
erstellte Datei „Dockerfile“ in "/home/Containers/Browser/Zen Browser";
Code: Select all
FROM archlinux:latest
# Install dependencies
RUN pacman -Syu --noconfirm && \
pacman -S --noconfirm \
libx11 libxrender libxtst gtk3 tar alsa-lib alsa-utils pipewire pipewire-alsa
# Set working directory to the mounted host directory
WORKDIR "/home/Containers/Browser/Zen Browser"
# Run the browser binary when the container starts
CMD ["./zen/zen-bin"]
- Verschoben den Tarball „zen.linux-x86_64.tar.bz2“ mithilfe des Dateimanagers nach "/home/Containers/ Browser/Zen Browser“ und entpackte es, sodass ich seinen Inhalt erhielt, einen Ordner namens „zen“ mit allen Dateien, die zum Ausführen des Webbrowsers erforderlich sind;
- erbaute die Erstellen Sie das Bild „browser_zen-browser“, indem Sie
ausführenCode: Select all
docker buildx build -t browser_zen-browser .
- Sie haben Docker die Berechtigung erteilt, mit dem Befehl
auf den X11-Anzeigeserver zuzugreifenCode: Select all
xhost +local:docker
- Führen Sie einen Container aus (und benennen Sie ihn) mit dem Befehl
Code: Select all
docker run -it --gpus all --name browser_zen-browser -v "/home/Containers/Browser/Zen Browser:/home/Containers/Browser/Zen Browser:rw" -e NVIDIA_DRIVER_CAPABILITIES=all -e DISPLAY=$DISPLAY -e XDG_RUNTIME_DIR=/tmp -v /tmp/.X11-unix:/tmp/.X11-unix -v /run/user/1000/pipewire-0:/tmp/pipewire-0 browser_zen-browser
neu starten
Code: Select all
docker start browser_zen-browser
Da ist es das Problem!
Jetzt muss ich die gleichen Schritte ausführen und meine anderen „Boxen“ unter "/home/Containers/Browsers/" erstellen.
Also habe ich versucht, mit einem zu beginnen, zum Beispiel „TLXS“, aber nachdem ich die Docker-Datei erstellt, den Tarball-Inhalt extrahiert und das Image erstellt habe, kann ich es nicht ausführen.
Ich befinde mich unter "/home/Containers/Browsers/TLXS/Zen Browser", dort befinden sich zwei Elemente, die Datei „Dockerfile“ und der Ordner „ Zen'. Dies ist die Ausgabe des Befehls ls -l:
Code: Select all
total 4
-rw-r--r-- 1 371 Dockerfile
drwxr-xr-x 1 912 zen
Trotzdem, wenn ich den Befehl
ausführe
Code: Select all
docker run -it --gpus all --name tlxs_zen-browser -v "/home/Containers/Browsers/TLXS/Zen Browser:/home/Containers/Browsers/TLXS/Zen Browser:rw" -e NVIDIA_DRIVER_CAPABILITIES=all -e DISPLAY=$DISPLAY -e XDG_RUNTIME_DIR=/tmp -v /tmp/.X11-unix:/tmp/.X11-unix -v /run/user/1000/pipewire-0:/tmp/pipewire-0 tlxs_zen-browser
Code: Select all
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: exec: "./zen/zen-bin": stat ./zen/zen-bin: no such file or directory: unknown.
Ich denke also, dass es sich um ein Problem mit Docker handelt, da die Datei aus irgendeinem seltsamen Grund nicht angezeigt werden kann.