Ein isoliertes Slack-Desktop-Umfeld mit Docker erstellen
Hallo! In diesem Artikel werden wir untersuchen, wie man eine isolierte und portable Laufzeitumgebung für die Slack-Desktop-Anwendung mit Docker-Containern erstellt.
Warum Slack isolieren?
Slack ist ein super beliebtes Tool für Teamzusammenarbeit und Kommunikation. Es ist großartig, um alle auf dem Laufenden zu halten, aber manchmal kann es im Hintergrund für lange Zeit laufen. Das kann manchmal zu Konflikten mit anderen Anwendungen auf Ihrem System führen. Andererseits können Slacks Updates, Plugins, Konfigurationsdateien usw. auch die Umgebung des Hostsystems "verschmutzen". Das kann ein bisschen lästig sein!
Slack in einem Docker-Container auszuführen, kann es effektiv isolieren, indem man:
- Ressourcenkonflikte mit anderen Anwendungen vermeidet.
- Verschmutzung der Systemumgebung verhindert.
- Eine portable und konsistente Laufzeitumgebung erreicht.
- Backup und Wiederherstellung von Konfigurationen erleichtert.
Dockerfile
Wir werden das Slack-Container-Image auf Basis des leichten Debian 11 (Bullseye)-Systems erstellen. Die folgenden sind die Schlüsselschritte:
-
Installieren Sie grundlegende Softwarepakete: apt-transport-https, ca-Zertifikate, curl, gnupg usw., um sich auf das Hinzufügen von Repositorys und Installation vorzubereiten.
-
Konfigurieren Sie die Sprachumgebung: Stellen Sie die Standardeinstellung für das Gebietsschema auf en_US.UTF-8 ein.
-
Fügen Sie das Slack-Repository hinzu: Erhalten Sie den Repositorieschlüssel von offiziellen Slack-Quellen und schreiben Sie die Adressquelle in sources.list.
-
Installieren Sie Slack: Installieren Sie mit dem apt-Befehl das slack-desktop-Paket und seine Laufzeitabhängigkeiten basierend auf der konfigurierten Quelle.
-
Legen Sie den Einstiegspunkt fest: Stellen Sie /usr/lib/slack/slack als den Standardausführungsbefehl für den Container ein.
Das komplette Dockerfile-Skript ist wie folgt:
FROM debian:bullseye-slim
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
RUN apt-get update && apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
locales \
--no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
RUN echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
&& locale-gen en_US.utf8 \
&& /usr/sbin/update-locale LANG=en_US.UTF-8
# Das Slack Debian Repo hinzufügen
RUN curl -sSL https://packagecloud.io/slacktechnologies/slack/gpgkey | apt-key add -
RUN echo "deb https://packagecloud.io/slacktechnologies/slack/debian/ jessie main" > /etc/apt/sources.list.d/slacktechnologies_slack.list
RUN apt-get update && apt-get -y install \
libasound2 \
libgtk-3-0 \
libx11-xcb1 \
libxkbfile1 \
slack-desktop \
--no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["/usr/lib/slack/slack"]
Den Slack-Container ausführen
Um das gebaute Image auszuführen, können Sie den folgenden Befehl verwenden:
docker run --rm -it \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=unix$DISPLAY \
--device /dev/snd \
--device /dev/dri \
--device /dev/video0 \
--group-add audio \
--group-add video \
-v "${HOME}/.slack:/root/.config/Slack" \
--ipc="host" \
--name slack \
jess/slack
Dieser Befehl führt die folgenden Zuordnungen und Konfigurationen aus:
- Die Zeitzone des Hosts auf den Container abbilden
- Das X11 Unix Socket des Hosts teilen, damit der Container GUI-Anwendungen ausführen kann
- Die DISPLAY-Umgebungsvariable des Containers setzen, um eine Verbindung zum X Server des Hosts herzustellen
- Audio-, Video- und andere Geräte für den Container freigeben
- Das .slack-Verzeichnis des aktuellen Benutzers für Konfiguration und Cachespeicherung auf den Container abbilden
- Den Container im IPC-Namensraum des Hosts ausführen, was die Verwendung des X Servers ermöglicht
Auf diese Weise können Sie die Slack-Desktop-Anwendung sicher in einem isolierten und anpassbaren Container ausführen.
Zusammenfassung
Docker ist ein großartiges Werkzeug, um Desktop-Anwendungen wie Slack vom Hostsystem zu entkoppeln. Mit automatischen Builds basierend auf Dockerfiles können Sie sicherstellen, dass Slack in einer konsistenten und portablen Umgebung läuft, egal wie Ihre lokale Umgebung aussieht.