Es kann erforderlich sein, für Aufgaben wie die Fehlerbehebung zusätzliche Pakete oder Tools auf Container-Optimized OS zu installieren. So können Sie beispielsweise Probleme mit der Knotenverbindung beheben, indem Sie tcpdump
in der Toolbox installieren.
Container-Optimized OS verfügt zwar über keinen Paketmanager, Sie können aber mit dem vorinstallierten Toolbox-Dienstprogramm zusätzliche Pakete oder Tools installieren, die Sie benötigen. /usr/bin/toolbox
ist die bevorzugte Methode zum Installieren und Ausführen von einmaligen Fehlerbehebungstools.
/usr/bin/toolbox
bietet Ihnen im Wesentlichen eine Shell in einer Umgebung, die ähnlich zu chroot in Debian-Systemen ist. Nach dem Aufrufen von /usr/bin/toolbox
führt es die folgenden Befehle aus:
docker pull
unddocker create
, um die Umgebung einzurichten. Diese werden nur beim ersten Aufruf von/usr/bin/toolbox
ausgeführt.systemd-nspawn
, um den angegebenen Befehl auszuführen oder, falls kein Befehl vorhanden ist, eine Shell bereitzustellen.
toolbox
hat einige andere Eigenschaften, die zu beachten sind:
- Für das Aufrufen der
toolbox
nach dem ersten Aufruf benötigen Sie weder einen aktiven Docker-Daemon noch entsteht dadurch Netzwerk-/Speicherlast. - Die
toolbox
-Umgebung wird einmal für jeden Nutzer eingerichtet, der sie aufruft. Mit dem Befehlsudo toolbox
richten Sie diese für den Nutzerroot
ein. - Die
toolbox
-Umgebung wird unter/var/lib/toolbox
eingerichtet und bleibt auch nach einem Neustart bestehen. - Sie haben in der
toolbox
-Umgebung Zugriff auf Bereiche des Root-Dateisystems, z. B. die Nutzer-Basisverzeichnisse.
Toolbox an die Bereitstellung anpassen
In den folgenden Beispielen wird davon ausgegangen, dass Ihr Nutzername USER
und der Container-Optimized OS-Instanzname cos-dev
ist.
Sie können das von toolbox
verwendete Docker-Image sowie die Pfade, die toolbox
im Root-Dateisystem zur Verfügung stehen, anpassen. Diese Einstellungen befinden sich in der Datei /etc/default/toolbox
. Die Standarddatei /etc/default/toolbox
sieht in etwa so aus:
USER@cos-dev ~ $ cat /etc/default/toolbox
# Copyright 2016 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
TOOLBOX_DOCKER_IMAGE="gcr.io/cos-cloud/toolbox"
TOOLBOX_DOCKER_TAG="v20220722"
TOOLBOX_BIND="--bind=/:/media/root/ --bind=/mnt/disks/:/media/root/mnt/disks/ --bind=/var/:/media/root/var/ --bind=/home:/media/root/home/ --bind=/etc/resolv.conf:/etc/resolv.conf"
: ${USER:=root}
- Die Variablen
TOOLBOX_DOCKER_IMAGE
undTOOLBOX_DOCKER_TAG
geben das zu verwendende Docker-Image an. In der Standardeinstellunggcr.io/cos-cloud/toolbox
sind einige gebräuchliche Tools wie die Google Cloud CLI vorinstalliert. - Die Variable
TOOLBOX_BIND
gibt die Verzeichnispfade aus dem Root-Dateisystem an, die innerhalb der Toolbox-Umgebung verfügbar sein sollen.
Zum Ändern der Standardeinstellungen ändern Sie die Datei /etc/default/toolbox
oder geben neue Werte für die Variablen in ${HOME}/.toolboxrc
für den entsprechenden Nutzer an: Wenn beispielsweise toolbox
als Container fedora:latest
verwenden soll, können Sie die folgenden Befehle ausführen:
USER@cos-dev ~ $ echo "TOOLBOX_DOCKER_IMAGE=docker.io/library/fedora" > "${HOME}/.toolboxrc"
USER@cos-dev ~ $ echo "TOOLBOX_DOCKER_TAG=latest" >> "${HOME}/.toolboxrc"
USER@cos-dev ~ $ toolbox
Ab Meilenstein 93 kann die Toolbox kein benutzerdefiniertes Toolbox-Image abrufen. Sie können dieses Problem umgehen, indem Sie ein benutzerdefiniertes Docker-Image-Tarball-Paket für die Toolbox erstellen und es entweder über die Datei ${HOME}/.toolboxrc
oder /etc/default/toolbox
exportieren.
USER@cos-dev ~ $ echo "TOOLBOX_DOCKER_IMAGE_TARBALL=[docker image tar ball]" > "${HOME}/.toolboxrc" USER@cos-dev ~ $ toolbox
USER@cos-dev ~ $ cat /etc/default/toolbox # Copyright 2016 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. TOOLBOX_DOCKER_IMAGE="gcr.io/cos-cloud/toolbox" TOOLBOX_DOCKER_TAG="v20220722" TOOLBOX_DOCKER_IMAGE_TARBALL=[location/to/tarball] TOOLBOX_BIND="--bind=/:/media/root/ --bind=/mnt/disks/:/media/root/mnt/disks/ --bind=/var/:/media/root/var/ --bind=/home:/media/root/home/" : ${USER:=root} USER@cos-dev ~ $ toolbox
Tools aus der Toolbox installieren und ausführen
Wenn Sie beispielsweise das Dienstprogramm toolbox
aufgerufen haben, um die Shell zu starten, können Sie apt-get
innerhalb des generierten Containers zum Installieren von Paketen verwenden. Beispiel:
# Inside the toolbox shell
USER@cos-dev ~ $ toolbox
root@cos-dev:~# apt-get update && apt-get install -y htop psmisc
root@cos-dev:~# htop
root@cos-dev:~# pstree -p
root@cos-dev:~# exit
Sie müssen nicht immer toolbox
eingeben, um Befehle darin auszuführen. Sie können Ihren Befehlen einfach toolbox
voranstellen. So können Sie beispielsweise das Dienstprogramm strace
installieren und ausführen, um die Ausführung des Docker-Daemons zu verfolgen:
USER@cos-dev ~ $ toolbox apt-get install -y strace
USER@cos-dev ~ $ toolbox strace -p `pidof dockerd`
Die Google Cloud CLI ist in der Toolbox vorinstalliert:
USER@cos-dev ~ $ toolbox
root@cos-dev:~# which gcloud
/google-cloud-sdk/bin/gcloud
# View installed components
root@cos-dev:~# gcloud components list
Your current gcloud CLI version is: 287.0.0
The latest available version is: 295.0.0
...
Beachten Sie, dass die gcloud CLI nur auf Ressourcen zugreifen kann, für die die VM-Instanz Zugriff hat. Lesen Sie die Compute Engine-Dokumentation, um mehr über das Bereitstellen von VM-Instanzen mit Zugriff auf andere Ressourcen zu erfahren.
In der Dokumentation zur Google Cloud CLI erfahren Sie mehr über die Verwendung der gcloud CLI.
Dateien in die Toolbox verschieben und daraus entfernen
Auf das Root-Dateisystem des Hosts kann innerhalb von toolbox
über den Pfad /media/root
zugegriffen werden. Auf dem Host ist das Stammverzeichnis von toolbox
über folgenden Pfad zugänglich: /var/lib/toolbox/USER-gcr.io_cos-cloud_toolbox-VERSION/root
Dabei gilt: USER
dein Nutzername und VERSION
ist dietoolbox
Versionsnummer (z. B. v20220722
).
Die folgenden Beispiele zeigen, wie Sie Dateien in die toolbox
verschieben und daraus entfernen:
# Access the host filesystem inside the toolbox
USER@cos-dev ~ $ toolbox
root@cos-dev:~# ls /media/root
bin boot dev etc home lib lib64 ...
root@cos-dev:~# cp /media/root/home/USER/some-file .
# Access toolbox directory from the host
USER@cos-dev ~ $ sudo cp some-file /var/lib/toolbox/USER-gcr.io_cos-cloud_toolbox-v20220722/root
# Run a command inside toolbox and save its output in your home directory
USER@cos-dev ~ $ toolbox strace -o /media/root/$HOME/ls.strace ls
USER@cos-dev ~ $ more $HOME/ls.strace
Von Toolbox belegten Speicherplatz bereinigen
Die Toolbox-Installation belegt ungefähr 2-3 GB Speicherplatz in /var
. Die Laufwerksnutzung variiert je nach Version des Container-Optimized OS. Führen Sie je nach Container-Optimized OS-Version folgende Aufgaben aus, um den von Toolbox belegten Speicherplatz freizugeben:
Meilenstein 89 und niedriger
# remove files in /var/lib/toolbox
sudo rm -rf /var/lib/toolbox/*
# remove container artifacts
docker image rm $IMAGE_PATH:$TAG
Sie können docker image ls
ausführen, um diese Werte zu ermitteln. Zum Beispiel: IMAGE_PATH=gcr.io/cos-cloud/toolbox
und TAG=v20220722
.
Meilenstein 93 und höher
# remove files in /var/lib/toolbox
sudo rm -rf /var/lib/toolbox/*
# remove container artifacts
sudo ctr images rm $IMAGE_NAME
Sie können sudo ctr images ls -q
ausführen, um diesen Wert zu ermitteln. Beispiel: IMAGE_NAME=gcr.io/cos-cloud/toolbox:v20220722