Sie können eine Compute Engine-Instanz oder eine Instanzvorlage konfigurieren, um einen Docker-Container bereitzustellen und zu starten. Compute Engine stellt ein aktuelles Container-Optimized OS (COS)-Image mit installiertem Docker bereit und startet Ihren Container, wenn Ihre Instanz gestartet wird.
Hinweis
- Sollten Sie mit Containern noch nicht vertraut sein, lesen Sie die Informationen über Container und deren Vorteile.
- Wenn Sie nicht mit Docker vertraut sind, lesen Sie die Docker-Dokumentation.
- Hier finden Sie Informationen über Container-Optimized OS.
- Mehr über verwaltete Instanzgruppen (Managed Instance Groups, MIGs) erfahren
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Cloud de Confiance by S3NS Dienste und APIs überprüft. Zum Ausführen von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei der Compute Engine authentifizieren:
Wählen Sie den Tab für die geplante Verwendung der Beispiele auf dieser Seite aus:
Console
Wenn Sie über die Cloud de Confiance Console auf Dienste und APIs von Cloud de Confiance by S3NS zugreifen, müssen Sie die Authentifizierung nicht einrichten.
gcloud
-
Installieren Sie die Google Cloud CLI und melden Sie sich dann mit Ihrer föderierten Identität in der gcloud CLI an. Nach der Anmeldung initialisieren Sie die Google Cloud CLI mit dem folgenden Befehl:
gcloud init
-
- Legen Sie eine Standardregion und -zone fest.
Container auf Instanzen und MIGs bereitstellen
Durch die Bereitstellung von Containern in Compute Engine können Sie die Anwendungsbereitstellung vereinfachen und gleichzeitig die Instanzinfrastruktur steuern.
- Verwalten Sie Instanzen, auf denen Container ausgeführt werden, genauso wie jede andere Instanz, wenn Sie Ihre Compute Engine-Infrastruktur konfigurieren und verwalten.
- Zum Verwalten Ihrer Instanzen mit Containern verwenden Sie vertraute Prozesse und Tools wie die Google Cloud CLI oder die Compute Engine API.
- Erstellen Sie skalierbare Dienste mithilfe von verwalteten Instanzgruppen, in denen Container ausgeführt werden. Diese bieten Features wie Autoscaling, automatische Reparatur, Rolling Updates, Mehrzonenbereitstellungen und Load-Balancing.
Alternativ können Sie die Bereitstellung in Google Kubernetes Engine in Erwägung ziehen, um die folgenden Möglichkeiten zu erhalten:
- Ausführung einer großen Anzahl von Mikrodiensten
- Schnellerer Start von Containern
- Nutzung der Vorteile der automatischen Orchestrierung von Kubernetes, einschließlich automatischer Upgrades, automatischer Knotenreparatur und Autoscaling
Wenn Sie jeden Mikrodienst auf einer separaten Instanz in Compute Engine ausführen, kann der Aufwand des Betriebssystems einen erheblichen Teil Ihrer Kosten ausmachen. Mit der Google Kubernetes Engine können Sie mehrere Container und Containergruppen für jede Instanz bereitstellen. Dadurch können Hostinstanzressourcen effizienter Mikrodiensten mit geringerem Ressourcenbedarf zugewiesen werden.
Container in Compute Engine bereitstellen
Gängige Methoden zum Bereitstellen von Software auf einer Compute Engine-Instanz:
- Software beim Start der Instanz mit einem Startskript oder cloud-init bereitstellen.
- Erstellen eines benutzerdefinierten Bootlaufwerk-Speicherabbilds mit vorinstallierter Software.
Bei beiden Methoden in der vorherigen Liste werden die Aufgaben zum Konfigurieren der Anwendung und zum Einrichten der Betriebssystemumgebung kombiniert. Als Entwickler müssen Sie alle Laufzeitabhängigkeiten sorgfältig verfolgen und auflösen. Wenn beispielsweise zwei Anwendungen, die auf einer VM ausgeführt werden, unterschiedliche Versionen derselben Bibliothek verwenden, müssen Sie beide Versionen installieren und über Systemvariablen darauf verweisen.
Alternativ können Sie Software in einem Container auf einer Instanz oder in einer MIG bereitstellen. Ein Container enthält sowohl Anwendungssoftware als auch die erforderlichen Bibliotheken und ist von den Anwendungen und Bibliotheken des Betriebssystems isoliert. Ein Container kann zwischen Bereitstellungsumgebungen verschoben werden, ohne dass es zu Konflikten zwischen Bibliotheksversionen im Container und im Betriebssystem kommt.
Im Folgenden wird beschrieben, wie Sie einen Container in Compute Engine bereitstellen:
- Sie bündeln Ihre Anwendung und die erforderlichen Bibliotheken in einem Docker-Image und veröffentlichen das Image in Artifact Registry oder in einer Drittanbieter-Registry wie Docker Hub.
- Sie geben einen Namen für das Docker-Image und die
docker run-Konfiguration beim Erstellen einer Instanz oder einer Instanzvorlage für eine MIG an.
Compute Engine führt die folgenden Aufgaben aus, nachdem Sie eine Anfrage zum Erstellen einer Instanz gestellt haben:
- Compute Engine erstellt eine VM-Instanz, die ein von Google bereitgestelltes Container-Optimized OS-Image verwendet. Dieses Image enthält eine Docker-Laufzeit und zusätzliche Software, die für das Starten Ihres Containers zuständig ist.
- Compute Engine speichert Ihre Containereinstellungen in den Instanzmetadaten unter dem
gce-container-declaration-Metadatenschlüssel. - Wenn die VM gestartet wird, verwendet das Container-Optimized OS-Image die in den Metadaten der Instanz gespeicherte
docker run-Befehlskonfiguration, ruft das Container-Image aus dem Repository ab und startet den Container.
Beschränkungen
- Sie können nur einen Container pro Instanz bereitstellen. Google Kubernetes Engine kann hilfreich sein, wenn Sie mehrere Container pro Instanz bereitstellen müssen.
Sie können Container nur aus einem öffentlichen Repository oder aus einem privaten Artifact Registry- oder Container Registry-Repository bereitstellen, auf das Sie Zugriff haben. Andere private Repositories werden nicht unterstützt.
Informationen zu Berechtigungen für private Registries finden Sie in der Dokumentation zur Zugriffssteuerung für Artifact Registry oder Container Registry.
Sie können die Ports einer Instanz nicht den Ports des Containers zuordnen (Docker-Option
-p). Informationen zum Aktivieren des Zugriffs auf Ihre Container finden Sie unter Containerports veröffentlichen.Mit dieser Bereitstellungsmethode können Sie nur Container-Optimized OS-Images verwenden.
Sie können dieses Feature nur über die Cloud de Confiance Console oder die Google Cloud CLI verwenden, nicht über die API.
Container für die Bereitstellung vorbereiten
Wählen Sie eine der folgenden Methoden aus, um Compute Engine Zugriff auf Ihr Container-Image zu gewähren:
- Laden Sie Ihr Docker-Image in Artifact Registry hoch.
- Sie können beliebige öffentlich verfügbare Container-Images von Docker Hub oder aus anderen Registrys verwenden.
Container auf einer neuen Instanz bereitstellen
Sie können einen Container auf einer neuen VM-Instanz mithilfe derCloud de Confiance -Konsole oder der Google Cloud CLI bereitstellen.
Console
Im folgenden Beispiel wird ein Container aus einem von Google bereitgestellten Nginx-Docker-Image (https://gcr.io/cloud-marketplace/google/nginx1:latest) in einer VM-Instanz bereitgestellt. Wenn Sie ein anderes Docker-Image verwenden möchten, ersetzen Sie das Nginx-Docker-Image in den folgenden Schritten durch das gewünschte Image.
Wenn Sie dazu aufgefordert werden, wählen Sie Ihr Projekt aus und klicken auf Weiter. Die Seite Instanz erstellen wird angezeigt und enthält den Bereich Maschinenkonfiguration.
Rufen Sie im Bereich Maschinenkonfiguration die Option Name auf und geben Sie einen Namen für die Instanz an. Weitere Informationen finden Sie unter Namenskonvention für Ressourcen.
Klicken Sie im Navigationsmenü auf Betriebssystem und Speicher. Der Bereich Betriebssystem und Speicher wird angezeigt.
Rufen Sie den Abschnitt Container auf und klicken Sie auf Container bereitstellen. Führen Sie im angezeigten Bereich Container konfigurieren die folgenden Schritte aus:
- Geben Sie das zu verwendende Container-Image an. Betrachten Sie hierzu folgende Beispiele:
- Wenn Sie ein NGINX 1.12-Container-Image aus Cloud Launcher auswählen möchten, geben Sie
gcr.io/cloud-marketplace/google/nginx1:1.12an. - Wenn Sie ein Apache-Container-Image aus Docker Hub bereitstellen möchten, geben Sie immer den vollständigen Docker-Image-Namen an, z. B.
docker.io/httpd:2.4.
- Wenn Sie ein NGINX 1.12-Container-Image aus Cloud Launcher auswählen möchten, geben Sie
- Optional. Geben Sie weitere Konfigurationsparameter Ihrer Wahl an. Weitere Informationen zu Containerkonfigurationsoptionen finden Sie unter Optionen zum Ausführen von Containern konfigurieren.
- Klicken Sie auf Auswählen, um die Konfiguration des Containers abzuschließen und zum Bereich Betriebssystem und Speicher zurückzukehren.
- Geben Sie das zu verwendende Container-Image an. Betrachten Sie hierzu folgende Beispiele:
Optional: Geben Sie weitere Konfigurationsoptionen an. Weitere Informationen finden Sie unter Konfigurationsoptionen beim Erstellen von Instanzen.
Klicken Sie auf Erstellen, um die Erstellung der Instanz abzuschließen.
Nachdem Sie die Instanz erstellt haben, wird sie von Compute Engine gestartet und der Container wird gestartet.
gcloud
-
Aktivieren Sie Cloud Shell in der Cloud de Confiance Console.
Unten in der Cloud de Confiance Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Führen Sie den Befehl
gcloud compute instances create-with-containeraus:gcloud compute instances create-with-container INSTANCE_NAME \ --container-image=CONTAINER_IMAGEErsetzen Sie Folgendes:
INSTANCE_NAME: Name für die neue Instanz.CONTAINER_IMAGEist der Name des Container-Images.
Mit dem folgenden Befehl wird beispielsweise eine Instanz mit dem Namen
nginx-vmerstellt, die das Container-Image startet und ausführt:gcr.io/cloud-marketplace/google/nginx1:1.12gcloud compute instances create-with-container nginx-vm \ --container-image=gcr.io/cloud-marketplace/google/nginx1:1.12Wenn Sie ein Apache-Container-Image von Docker Hub bereitstellen möchten, geben Sie immer den vollständigen Docker-Image-Namen an:
docker.io/httpd:2.4.
Container auf einer Instanz aktualisieren
Sie können ein Docker-Image und Konfigurationsoptionen aktualisieren, um den Container auf einer Instanz mit der Cloud de Confiance -Konsole oder der Google Cloud CLI auszuführen.
Wenn Sie einen Container aktualisieren, führt Compute Engine die folgenden zwei Schritte aus:
- Die Containerdeklaration auf der Instanz wird aktualisiert. Compute Engine speichert die aktualisierte Containerdeklaration in den Instanzmetadaten unter dem
gce-container-declaration-Metadatenschlüssel. - Wird die Instanz ausgeführt, wird sie beendet und neu gestartet, um die aktualisierte Konfiguration zu übernehmen. Wenn die Instanz beendet ist, wird die Containerdeklaration aktualisiert, ohne die Instanz zu starten. Die Instanz lädt das neue Image herunter und startet den Container beim Start.
Console
Rufen Sie die Seite VM-Instanzen auf.
Klicken Sie auf den Namen der zu aktualisierenden Instanz.
Klicken Sie auf der Seite "Instanzdetails" auf Bearbeiten.
Geben Sie das neue Container-Image an und aktualisieren Sie ggf. die Optionen zum Ausführen des Containers.
Klicken Sie zum Speichern der Änderungen auf Speichern und neu starten. Compute Engine speichert die Änderungen und startet die Instanz automatisch neu, um die Aktualisierung zu übernehmen. Nach dem Neustart der Instanz wird das neue Image heruntergeladen und der Container mit der aktualisierten Konfiguration gestartet.
gcloud
Aktualisieren Sie die Containerdeklaration mit dem Befehl gcloud compute instances update-container. Beispiel:
gcloud compute instances update-container nginx-vm \
--container-image gcr.io/cloud-marketplace/google/nginx1:latest
Mit diesem Befehl wird das Container-Image auf gcr.io/cloud-marketplace/google/nginx1:latest gesetzt und die Instanz neu gestartet, um die Änderungen zu übernehmen. Außerdem können Sie die in Optionen zum Ausführen von Containern konfigurieren beschriebenen Attribute aktualisieren, indem Sie die entsprechenden Flags hinzufügen.
Nach dem Neustart der Instanz wird das neue Container-Image heruntergeladen und der Container mit der neuen Konfiguration gestartet.
Container in einer verwalteten Instanzgruppe bereitstellen
So stellen Sie einen Container in einer neuen verwalteten Instanzgruppe (Managed Instance Group, MIG) mit derCloud de Confiance console oder der Google Cloud CLI bereit:
Erstellen Sie eine Instanzvorlage auf der Grundlage eines Docker-Image.
Erstellen Sie eine MIG aus der neuen Instanzvorlage.
Console
Im folgenden Beispiel wird eine Instanzvorlage erstellt, die einen Container aus einem von Google bereitgestellten Nginx-Docker-Image (gcr.io/cloud-marketplace/google/nginx1:15) in einer MIG bereitstellt.
Wenn Sie andere Docker-Images verwenden möchten, ersetzen Sie gcr.io/cloud-marketplace/google/nginx1:15 im folgenden Beispiel durch das gewünschte Image.
Zur Seite Instanzvorlagen.
Klicken Sie zum Erstellen einer Instanzvorlage auf Instanzvorlage erstellen.
Wählen Sie unter Container die Option Container-Image bereitstellen aus.
Geben Sie unter Container-Image den Namen des Docker-Images an und konfigurieren Sie die Optionen zum Ausführen des Containers. Sie können beispielsweise
gcr.io/cloud-marketplace/google/nginx1:15für das Container-Image angeben.Klicken Sie auf Erstellen.
Erstellen Sie als Nächstes eine MIG, die die neue Instanzvorlage verwendet.
gcloud
Erstellen Sie eine Instanzvorlage zum Ausführen von Docker-Images mit dem gcloud compute instance-templates create-with-container-Befehl:
gcloud compute instance-templates create-with-container TEMPLATE_NAME \ --container-image DOCKER_IMAGE
Sie können auch Optionen zum Ausführen des Containers konfigurieren.
Mit dem folgenden Befehl wird beispielsweise eine neue Instanzvorlage mit dem Namen nginx-template erstellt, die Informationen über das Docker-Image enthält.
Eine aus dieser Vorlage erstellte Instanz startet das Docker-Image gcr.io/cloud-marketplace/google/nginx1:15 und führt es aus, wenn die Instanz gestartet wird.
gcloud compute instance-templates create-with-container nginx-template \
--container-image gcr.io/cloud-marketplace/google/nginx1:15
Erstellen Sie als Nächstes mit der neuen Instanzvorlage eine MIG.
Nun haben Sie eine Instanzvorlage und können eine MIG erstellen, die die Instanzvorlage verwendet. Führen Sie beispielsweise folgenden Befehl aus, um eine MIG mit der gcloud CLI und dem gerade erstellten nginx-template zu erstellen:
gcloud compute instance-groups managed create example-group \
--base-instance-name nginx-vm \
--size 3 \
--template nginx-template
Verwaltete Instanzgruppe aktualisieren, auf der ein Container ausgeführt wird
Sie können eine verwaltete Instanzgruppe (Managed Instance Group, MIG) aktualisieren, um eine neue Version eines Docker-Images oder eine neue Version des Container-Optimized OS-Betriebssystem-Images bereitzustellen.
MIG auf eine neue Version eines Container-Images aktualisieren
Sie können eine neue Version eines Docker-Images in einer verwalteten Instanzgruppe mit dem Managed Instance Group Updater in drei Schritten bereitstellen:
- Das neue Docker-Image für die Bereitstellung vorbereiten.
- Erstellen Sie eine Instanzvorlage basierend auf dem neuen Docker-Image auf die gleiche Weise, wie Sie eine containerbasierte Vorlage erstellen.
- Aktualisieren Sie eine MIG auf die neue Instanzvorlage, indem Sie den Updater für verwaltete Instanzgruppen verwenden.
Verwaltete Instanzgruppe auf die neue Version eines Container-Optimized OS-Images aktualisieren
Google aktualisiert Container-Optimized OS-Images regelmäßig. Möglicherweise möchten Sie diese Aktualisierungen auf Ihre containerisierten MIGs anwenden, ohne Ihr Docker-Image zu ändern. Sie können eine MIG mit der Cloud de Confiance console oder der Google Cloud CLI in zwei Schritten auf eine neue Version eines Container-Optimized OS-Betriebssystem-Images aktualisieren:
- Erstellen Sie eine Instanzvorlage anhand der aktuellen Version Ihres Docker-Images in der gleichen Weise, wie Sie für eine neue MIG eine containerbasierte Vorlage erstellen. Standardmäßig wird die neueste unterstützte Version eines Container-Optimized OS-Images verwendet.
- Aktualisieren Sie eine verwaltete Instanzgruppe mit der neuen Instanzvorlage mithilfe des Updaters für verwaltete Instanzgruppen.
Über SSH mit einem Container verbinden
Sie können eine Verbindung zu einem Container auf einer Instanz unter Verwendung von SSH herstellen. Verwenden Sie die gcloud CLI, um gcloud compute ssh mit dem --container-Flag auszuführen:
gcloud compute ssh INSTANCE_NAME --container CONTAINER_NAME
Ersetzen Sie Folgendes:
INSTANCE_NAMEden Namen der InstanzCONTAINER_NAME: Der Name des Containers
Weitere Informationen zum gcloud compute ssh-Befehl und zu seinen Argumenten.
Container in Compute Engine überwachen
Verwenden Sie zum Überwachen von Instanzen, auf denen ein Container-Optimized OS-Image ausgeführt wird, den Agent Node Problem Detector, der mit Cloud Monitoring kommuniziert und zustandsbezogene Messwerte erfasst. Der Agent ist in Container-Optimized OS-Images eingebunden und beginnt ab Meilenstein 77.
Wenn Sie den Agent aktivieren möchten, bearbeiten Sie in Containern mit Images mit Meilenstein 88 oder höher den Abschnitt Benutzerdefinierte Metadaten und setzen Sie google-monitoring-enabled auf true.
Weitere Möglichkeiten zum Aktivieren des Node Problem Detector finden Sie unter Statusüberwachung aktivieren.
Der Node Problem Detector-Agent unterstützt die Messwerte in der Messwertliste, die mit guest/ beginnen.
Wenn Sie mit den vom Agent erfassten Messwerten interagieren möchten, rufen Sie Metrics Explorer auf.
Logs ansehen
Sie können drei Arten von Logs für Container aufrufen:
Logs des Start-Agents, auch als konlet-Logs bekannt. Der Container-Start-Agent parst die Konfiguration des Containers und führt Aufgaben für den Start des Containers auf einer Compute Engine-Instanz aus.
Docker-Ereignisprotokolle melden Containerereignisse, einschließlich Start- und Stoppereignisse für Container.
Zu den Logs Ihres Containers gehört auch der
STDOUTvon Anwendungen, die in Ihrem Container ausgeführt werden.
Logs des Container-Start-Agents ansehen
Logs des Container-Start-Agents sind in der seriellen Konsole, über den im Betriebssystem-Image enthaltenen Systemdienst journald und über Cloud Logging verfügbar.
Logs des Container-Start-Agents in der seriellen Konsole ansehen
Console
Rufen Sie die Seite VM-Instanzen auf.
Wählen Sie die Instanz aus, für die Sie die Logs des Container-Start-Agents aufrufen möchten.
Klicken Sie unter Logs auf Serieller Port 1 (Konsole), um die Logs der seriellen Konsole aufzurufen.
gcloud
Verwenden Sie get-serial-port-output, um Logs am seriellen Port der Instanz anzuzeigen.
gcloud compute instances get-serial-port-output INSTANCE_NAME
Ersetzen Sie INSTANCE_NAME durch den Namen der Instanz.
Mit dem folgenden Befehl können Sie beispielsweise die serielle Portausgabe einer Instanz mit dem Namen nginx-vm aufrufen:
gcloud compute instances get-serial-port-output nginx-vm
Logs des Container-Start-Agents in journald ansehen
- Stellen Sie eine Verbindung von Ihrer Instanz zu einem Container über SSH her.
Führen Sie den Befehl
sudo journalctlaus, um die Logs zum Starten der Instanz und des Containers aufzurufen. Verwenden Sie den folgenden Befehl, um nach Logs des Container-Start-Agents (konlet) zu filtern.sudo journalctl -u konlet*
Logs des Container-Start-Agents in Logging ansehen
Console
Rufen Sie die Seite VM-Instanzen auf.
Wählen Sie die Instanz aus, für die Sie die Logs des Container-Start-Agents aufrufen möchten.
Klicken Sie unter Logs auf Cloud Logging, um Cloud Logging-Logs aufzurufen.
Geben Sie einen Suchfilter ein, um Container-Start-Agent-Logs abzurufen.
resource.type="gce_instance" logName="projects/PROJECT_ID/logs/cos_system" jsonPayload.SYSLOG_IDENTIFIER="konlet-startup" jsonPayload._HOSTNAME="INSTANCE_NAME"
Ersetzen Sie Folgendes:
PROJECT_ID: Die Projekt-ID, die die Instanz enthältINSTANCE_NAME: Der Name der Instanz, für die Sie Logs abrufen möchten
gcloud
Verwenden Sie den Befehl gcloud logging read mit einem geeigneten Filter, um die Logs des Container-Start-Agents aufzurufen.
gcloud logging read "resource.type=gce_instance AND \
logName=projects/PROJECT_ID/logs/cos_system AND \
jsonPayload.SYSLOG_IDENTIFIER=konlet-startup AND \
jsonPayload._HOSTNAME=INSTANCE_NAME"
Dabei gilt:
PROJECT_ID: Die Projekt-ID, die die Instanz enthältINSTANCE_NAME: Der Name der Instanz, für die Sie Logs abrufen möchten.
Mit dem folgenden Befehl können Sie beispielsweise die letzten 10 Container-Startup-Agent-Logs in Logging für eine Instanz mit dem Namen nginx-vm ansehen, auf der COS 70 ausgeführt wird und die sich in my-project befindet.
gcloud logging read "resource.type=gce_instance AND \
logName=projects/my-project/logs/cos_system AND \
jsonPayload.SYSLOG_IDENTIFIER=konlet-startup AND \
jsonPayload._HOSTNAME=nginx-vm" \
--limit 10
Docker-Ereignisprotokolle ansehen
Sie können Docker-Ereignislogs in journald und in Cloud Logging ansehen.
Docker-Ereignisprotokolle in journald ansehen
- Stellen Sie eine Verbindung von Ihrer Instanz zu einem Container über SSH her.
Führen Sie den Befehl
sudo journalctlmit dem folgenden Filter aus, um Docker-Ereignisprotokolle anzuzeigen.sudo journalctl -u docker-events-collector
Docker-Ereignisprotokolle in Logging anzeigen
Console
Rufen Sie die Seite VM-Instanzen auf.
Wählen Sie die Instanz aus, für die Sie die Logs des Start-Agents aufrufen möchten.
Klicken Sie unter Logs auf Cloud Logging, um Cloud Logging-Logs aufzurufen.
Geben Sie den folgenden Suchfilter ein, um Docker-Ereignislogs abzurufen.
resource.type="gce_instance" logName="projects/PROJECT_ID/logs/cos_system" jsonPayload._HOSTNAME="INSTANCE_NAME" jsonPayload.SYSLOG_IDENTIFIER="docker"
Dabei gilt:
PROJECT_ID: Die Projekt-ID, die die Instanz enthältINSTANCE_NAME: der Name der Instanz, für die Sie Logs abrufen möchten
gcloud
Verwenden Sie den Befehl gcloud logging read mit einem geeigneten Filter, um Docker-Ereignisprotokolle aufzurufen.
gcloud logging read "resource.type=gce_instance AND \
logName=projects/PROJECT_ID/logs/cos_system AND \
jsonPayload._HOSTNAME=INSTANCE_NAME AND \
jsonPayload.SYSLOG_IDENTIFIER=docker"
Dabei gilt:
PROJECT_ID: Die Projekt-ID, die die Instanz enthältINSTANCE_NAME: Der Name der Instanz, für die Sie Logs abrufen möchten
Mit dem folgenden Befehl können Sie beispielsweise die letzten 10 Docker-Ereignisprotokolle in Logging für eine Instanz namens nginx-vm aufrufen, auf der COS 70 ausgeführt wird und die sich in my-project befindet.
gcloud logging read "resource.type=gce_instance AND \
logName=projects/my-project/logs/cos_system AND \
jsonPayload._HOSTNAME=nginx-vm AND \
jsonPayload.SYSLOG_IDENTIFIER=docker" \
--limit 10
Containerlogs ansehen
Console
Rufen Sie die Seite VM-Instanzen auf.
Wählen Sie die Instanz aus, für die Sie die Logs des Start-Agents aufrufen möchten.
Klicken Sie unter Logs auf Cloud Logging, um Cloud Logging-Logs aufzurufen.
Die Cloud Logging-Seite wird mit einem Standardsuchfilter geladen. Kopieren Sie den Wert für
resource.labels.instance_id. Sie werden ihn später benötigen.Aktualisieren Sie den Suchfilter, um die Logs des Containers abzurufen.
resource.type="gce_instance" logName="projects/PROJECT_ID/logs/cos_containers" resource.labels.instance_id="INSTANCE_ID"
Dabei gilt:
PROJECT_ID: Die Projekt-ID, die die Instanz enthältINSTANCE_ID: Die ID der Instanz, für die Sie Logs abrufen möchten
gcloud
Verwenden Sie den Befehl gcloud logging read, um Containerlogs aufzurufen.
Ermitteln Sie die ID der Instanz, für die Sie Logs abrufen möchten.
gcloud compute instances describe INSTANCE_NAME \ --zone ZONE \ --format="value(id)"
Ersetzen Sie Folgendes:
INSTANCE_NAME: Der Name der Instanz, für die Sie Logs abrufen möchtenZONE: Die Zone, in der sich die Instanz befindet.
Rufen Sie mit dem folgenden Befehl und einem Filter die Containerlogs der Instanz auf:
gcloud logging read "resource.type=gce_instance AND \ logName=projects/PROJECT_ID/logs/cos_containers AND \ resource.labels.instance_id=INSTANCE_ID"Dabei gilt:
PROJECT_ID: Die Projekt-ID, die die Instanz enthältINSTANCE_ID: die ID der Instanz.
Mit dem folgenden Befehl können Sie beispielsweise die letzten 10 Containerlogs in Cloud Logging für eine Instanz aufrufen, auf der COS 70 ausgeführt wird, die sich in
my-projectbefindet und die Instanz-ID555123456789012345hat.gcloud logging read "resource.type=gce_instance AND \ logName=projects/my-project/logs/cos_containers AND \ resource.labels.instance_id=555123456789012345" \ --limit 10
Containeroptimierte Images oder Image-Familien festlegen
Containerisierte Instanzen oder Instanzvorlagen werden standardmäßig so erstellt, dass sie das neueste unterstützte Container-Optimized Image verwenden.
Das Image gehört zum Projekt cos-cloud.
Sie können diese Standardeinstellung durch ein anderes Image aus dem Projekt cos-cloud überschreiben.
Informationen zu verfügbaren Image-Familien und ihren Attributen finden Sie unter Richtige Version des Container-Optimized OS auswählen.
Wenn Sie beispielsweise wissen, welches Image Sie verwenden möchten, geben Sie in der gcloud CLI entweder das --image-Flag an, um das standardmäßige containeroptimierte Image zu überschreiben, oder das --image-family-Flag, um das neueste Image aus der Familie auszuwählen, die Sie beim Erstellen der Instanz angegeben haben.
Im folgenden Beispiel wird eine containerisierte Instanz erstellt, die das neueste Image aus der cos-dev-Image-Familie verwendet:
gcloud compute instances create-with-container nginx-vm \
--image-family cos-dev \
--image-project cos-cloud \
--container-image gcr.io/cloud-marketplace/google/nginx1:1.15
Firewallregeln konfigurieren
Bei containerisierten Instanzen werden Container gestartet, deren Netzwerk auf den Hostmodus festgelegt ist. Ein Container gehört zum Host-Netzwerk-Stack, d. h., alle Schnittstellen des Hosts sind für den Container zugänglich.
Standardmäßig blockieren Cloud de Confiance by S3NS Firewallregeln alle eingehenden Verbindungen zu einer Instanz und lassen alle ausgehenden Verbindungen von einer Instanz zu.
Erstellen Sie Firewallregeln, um eingehende Verbindungen zu Ihrer Instanz und somit zum Container zuzulassen.
Optionen zum Ausführen eines Containers konfigurieren
Für die Ausführung Ihres Containers können Sie folgende Optionen konfigurieren:
- Richtlinie für den Containerneustart festlegen
ENTRYPOINTdes Containers überschreiben (Standardbefehl, der beim Containerstart ausgeführt wird)- Argumente an den Befehl
ENTRYPOINTdes Containers übergeben - Den Container im privilegierten Modus ausführen
- Stellen Sie ein Hostverzeichnis oder
tmpfsals Datenvolumen im Container bereit. - Umgebungsvariablen festlegen
- Weisen Sie in der Containerlaufzeit einen Puffer für
STDINzu. - Ein Pseudoterminal zuordnen
Weitere Informationen finden Sie unter Optionen zum Ausführen von Containern konfigurieren