BashLinux

Besserer Docker-Bash-Login mit Container-Auswahl

In einem vorherigen Blogbeitrag haben wir eine nützliche Bash-Funktion namens dbash erstellt, um mühelos in Docker-Container einzusteigen, deren Namen mit “_web” enden. Die Funktion prüft die laufenden Container und startet eine interaktive Bash-Shell im ersten passenden Container.

Doch was passiert, wenn kein passender Container gefunden wird? In diesem aktualisierten Blogbeitrag werden wir die dbash-Funktion erweitern, um eine Auswahl aller verfügbaren Container anzuzeigen, wenn kein passender Container gefunden wird.


Die ursprüngliche Funktion

Zur Erinnerung, hier ist die ursprüngliche Version der dbash-Funktion:

# Alias for docker exec into containers ending with "_web"
dbash() {
  local container_name=$(docker ps --format '{{.Names}}' | grep '_web$' | head -n 1)
  if [ -n "$container_name" ]; then
    docker exec -it "$container_name" bash
  else
    echo "No container ending with '_web' found."
  fi
}

Die Funktion durchsucht die laufenden Container nach einem, dessen Name mit “_web” endet. Wenn ein passender Container gefunden wird, wird sofort eine interaktive Bash-Shell in diesem Container gestartet. Falls jedoch kein passender Container vorhanden ist, wird eine entsprechende Meldung ausgegeben.

Die aktualisierte neue Funktion

Um unseren Nutzern eine verbesserte Erfahrung zu bieten, haben wir die Funktion dbash aktualisiert, um bei Bedarf eine Auswahl aller verfügbaren Container anzuzeigen. Auf diese Weise können Sie den gewünschten Container auswählen und direkt in die interaktive Bash-Shell eintauchen.

# Alias for docker exec into containers ending with "_web"
dbash() {
local container_name=$(docker ps --format '{{.Names}}' | grep '_web$' | head -n 1)
if [ -n "$container_name" ]; then
docker exec -it "$container_name" bash
else
echo "No container ending with '_web' found. Listing available containers:"
local containers=($(docker ps --format '{{.Names}}'))
select container_option in "${containers[@]}"; do
if [ -n "$container_option" ]; then
docker exec -it "$container_option" bash
break
else
echo "Invalid option. Please try again."
fi
done
fi
}

Die Änderungen im Detail

Die aktualisierte dbash-Funktion funktioniert folgendermaßen:

  1. Die Funktion sucht zunächst nach einem Container, dessen Name mit “_web” endet, genau wie zuvor.
  2. Wenn ein passender Container gefunden wird, bleibt das Verhalten unverändert, und es wird sofort eine interaktive Bash-Shell in diesem Container gestartet.
  3. Falls jedoch kein passender Container gefunden wird, wird die Meldung “No container ending with ‘_web’ found. Listing available containers:” ausgegeben, gefolgt von einer Liste der verfügbaren Container.
  4. Eine select-Anweisung ermöglicht es Ihnen, einen Container aus der Liste auszuwählen, indem Sie einfach die entsprechende Nummer eingeben.
  5. Sobald Sie eine gültige Option ausgewählt haben, wird die docker exec-Anweisung mit dem ausgewählten Container ausgeführt, und Sie erhalten eine interaktive Bash-Shell in diesem Container.

Fazit

Die aktualisierte dbash-Funktion bietet Ihnen nun die Möglichkeit, einen Docker-Container auszuwählen, wenn kein passender Container mit “_web” gefunden wird. Dies spart Ihnen Zeit und bietet eine verbesserte Nutzererfahrung, insbesondere in Szenarien, in denen mehrere Container gleichzeitig ausgeführt werden. Sie können die Funktion einfach in Ihre Bash-Umgebung integrieren und die Vorteile nutzen, um nahtlos mit Ihren Docker-Containern zu interagieren.

Probieren Sie die aktualisierte dbash-Funktion aus und lassen Sie uns wissen, wie sie Ihnen gefällt! Wir sind gespannt auf Ihr Feedback und stehen Ihnen bei Fragen gerne zur Verfügung.

Happy Dockering!


Ein Gedanke zu „Besserer Docker-Bash-Login mit Container-Auswahl

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert