Es kann erforderlich sein, für Aufgaben wie die Fehlerbehebung zusätzliche Pakete oder Tools auf Container-Optimized OS zu installieren. Sie können beispielsweise tcpdump
in der Toolbox installieren, um Probleme mit der Knotenverbindung zu beheben.
Container-Optimized OS enthält zwar keinen Paketmanager, Sie können jedoch das vorinstallierte Dienstprogramm Toolbox verwenden, um bei Bedarf zusätzliche Pakete und Tools zu installieren. Wenn Sie Fehlerbehebungstools zur einmaligen Verwendung installieren und ausführen möchten, tun Sie dies am besten mit /usr/bin/toolbox
.
/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. Standardmäßig sind in der Dateigcr.io/cos-cloud/toolbox
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
In Milestone 93 kann das benutzerdefinierte Toolbox-Image nicht abgerufen werden. Um dieses Problem zu umgehen, erstellen Sie ein benutzerdefiniertes Docker-Image-Tarball für die Toolbox und exportieren Sie es entweder über eine ${HOME}/.toolboxrc
- oder eine /etc/default/toolbox
-Datei.
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 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 autorisiert ist. Lesen Sie die Dokumentation zur Compute Engine, um mehr über das Bereitstellen von VM-Instanzen mit Zugriff auf andere Ressourcen zu erfahren.
In der Google Cloud CLI-Dokumentation 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