Container auf VMs und verwalteten Instanzgruppen bereitstellen

Sie können eine VM-Instanz oder eine Instanzvorlage konfigurieren, um einen Docker-Container bereitzustellen und zu starten. Compute Engine stellt ein aktuelles Image eines Container-Optimized OS (COS) mit installiertem Docker bereit und startet den Container zusammen mit der VM. Weitere Informationen über die Vorzüge der Bereitstellung von Containern auf VMs finden Sie unter Container auf VMs und in Instanzgruppen bereitstellen weiter unten.

Vorbereitung

Container auf VMs und in Instanzgruppen bereitstellen

Mit der Bereitstellung von Containern in Compute Engine können Sie die Anwendungsbereitstellung vereinfachen und gleichzeitig Ihre VM-Infrastruktur gezielt steuern.

  • VMs, auf denen Container ausgeführt werden, können Sie genauso verwalten wie alle anderen VMs, die Sie im Rahmen Ihrer Compute Engine-Infrastruktur konfigurieren und verwalten.
  • Sie können skalierbare Dienste mithilfe verwalteter Instanzgruppen erstellen, in denen Container ausgeführt werden. Dadurch stehen Ihnen verschiedene Funktionen zur Verfügung, wie Autoscaling, automatische Reparatur, Rolling Updates, Bereitstellung in mehreren Zonen und Load-Balancing.
  • Sie können vertraute Prozesse und Tools wie das gcloud-Befehlszeilentool oder die Compute Engine API für die Verwaltung Ihrer VMs mit Containern nutzen.

Alternativ können Sie Container in Kubernetes Engine bereitstellen. Dies bietet folgende Möglichkeiten:

  • 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

Das Ausführen jedes Mikrodienstes auf einer separaten VM in Compute Engine kann durch die Beanspruchung des Betriebssystems erhebliche Kosten verursachen. Mit der Kubernetes Engine können Sie mehrere Container und Gruppen von Containern für jede VM-Instanz bereitstellen. Dadurch können VM-Ressourcen des Hosts Mikroservices mit geringerem Platzbedarf effizienter zugewiesen werden.

Container in Compute Engine bereitstellen

Die gängigen Methoden zur Bereitstellung von Software in einer Compute Engine-VM-Instanz sind:

  • Bereitstellen der Software beim VM-Start mit einem Startskript oder mit cloud-init
  • Erstellen eines benutzerdefinierten Bootlaufwerk-Images mit vorinstallierter Software

Bei beiden genannten Methoden muss zum einen die Anwendung konfiguriert und zum anderen die Umgebung des Hostbetriebssystems eingerichtet werden. 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, verschiedene Versionen der gleichen Bibliothek verwenden, müssen Sie beide Versionen installieren und über Systemvariablen auf diese verweisen.

Eine VM-Instanz mit Anwendungen, die direkt auf dem Hostbetriebssystem bereitgestellt werden

Sie können Software in einem Container auch direkt auf einer VM-Instanz oder in einer verwalteten Instanzgruppe bereitstellen. Jeder Container enthält sowohl die Anwendungssoftware als auch die benötigten Bibliotheken und ist von den Anwendungen und Bibliotheken des Hostbetriebssystems isoliert. Container können problemlos zwischen Bereitstellungsumgebungen verschoben werden, ohne Konflikte zwischen den Bibliotheksversionen in einem Container und jenen im Hostbetriebssystem lösen zu müssen.

Eine VM-Instanz mit Anwendungen, die in einem Container bereitgestellt werden

So stellen Sie einen Container in Compute Engine bereit:

  1. Bündeln Sie Ihre Anwendung und die benötigten Bibliotheken in einem Docker-Image und veröffentlichen Sie das Image in Container Registry oder öffentlich auf Docker Hub oder in einer anderen Registry.
  2. Geben Sie für das Docker-Image einen Namen an und konfigurieren Sie docker run, wenn Sie eine VM-Instanz oder eine Instanzvorlage für eine verwaltete Instanzgruppe erstellen.

Compute Engine führt, nachdem Sie die Anfrage zum Erstellen einer VM-Instanz oder einer Instanzvorlage gestellt haben, die folgenden Aufgaben aus:

  1. Compute Engine erstellt eine VM-Instanz oder eine Instanzvorlage mit einem von Google bereitgestellten Container-Optimized OS-Image. Dieses Image enthält die Docker-Laufzeit und zusätzliche Software, die den Container startet.
  2. Compute Engine speichert die Containereinstellungen in den Instanzmetadaten unter dem Metadatenschlüssel gce-container-declaration.
  3. Das Container-Optimized OS-Image ruft das Container-Image aus dem Repository ab und startet den Container beim Start der VM gemäß der in den Metadaten der Instanz gespeicherten Konfiguration des Befehls docker run.
Schritte zum Erstellen einer VM-Instanz oder einer verwalteten Instanzgruppe mit Ausführung eines Containers

Beschränkungen

  • Pro VM-Instanz können Sie jeweils nur einen Container bereitstellen. Mit Kubernetes Engine lassen sich mehrere Container pro VM-Instanz bereitstellen.
  • Sie können Container nur aus einem öffentlichen Repository oder aus einem privaten Repository in der Google Container Registry bereitstellen. Andere private Repositories werden derzeit nicht unterstützt.
  • Es ist nicht möglich, die Ports einer VM-Instanz den Ports des Containers zuzuordnen (Docker-Option -p).
  • Mit dieser Bereitstellungsmethode können Sie nur Container-Optimized OS-Images verwenden.
  • Sie können diese Funktion nur über die Google Cloud Platform Console oder das gcloud-Befehlszeilentool nutzen.

Container für die Bereitstellung vorbereiten

Wählen Sie die Methode zur Bereitstellung Ihres Container-Images in Compute Engine:

  • Sie können das Docker-Image in die Google Container Registry hochladen.
  • Sie können beliebige öffentlich verfügbare Container-Images von Docker Hub oder aus anderen Registrys verwenden.

Container auf einer neuen VM-Instanz bereitstellen

Auf einer neuen VM-Instanz können Sie Container über die Google Cloud Platform Console oder mit dem gcloud-Befehlszeilentool bereitstellen.

Konsole

Im folgenden Beispiel wird ein Nginx-Docker-Image von Google (gcr.io/cloud-marketplace/google/nginx1:1.12) auf einer VM-Instanz bereitgestellt. Wenn Sie ein anderes Docker-Image verwenden möchten, wählen Sie in den nachstehenden Beispielen das gewünschte Image anstelle von gcr.io/cloud-marketplace/google/nginx1:1.12.

  1. Öffnen Sie die Seite mit den VM-Instanzen.

    Weiter zur Seite "VM-Instanzen"

  2. Klicken Sie auf Instanz erstellen, um eine neue Instanz zu erstellen.
  3. Klicken Sie im Abschnitt Container das Kästchen Container-Image bereitstellen an.
  4. Geben Sie unter Container-Image einen Namen für das Container-Image an und konfigurieren Sie bei Bedarf die Optionen zum Ausführen des Containers. Beispielsweise können Sie als Container-Image gcr.io/cloud-marketplace/google/nginx1:1.12 angeben.
  5. Klicken Sie auf Erstellen.

gcloud

Verwenden Sie den Befehl gcloud compute instances create-with-container:

 gcloud compute instances create-with-container [INSTANCE_NAME] \
     --container-image [DOCKER_IMAGE]

Der nachstehende Befehl erstellt zum Beispiel eine VM-Instanz mit dem Namen "nginx-vm", die das Docker-Image gcr.io/cloud-marketplace/google/nginx1:1.12 startet und ausführt.

 gcloud compute instances create-with-container nginx-vm \
     --container-image gcr.io/cloud-marketplace/google/nginx1:1.12

Weitere Informationen zum Befehl gcloud compute instances create-with-container.

Wenn Sie ein öffentliches Image von Docker Hub verwenden, müssen Sie immer den vollständigen Namen des Docker-Images angeben. Geben Sie zum Beispiel den folgenden Image-Namen an, um ein Apache-Container-Image bereitzustellen:

docker.io/httpd:2.4

Container auf einer VM-Instanz aktualisieren

Sie können ein Docker-Image und die Konfigurationsoptionen für die Ausführung des Containers auf einer VM-Instanz in der Google Cloud Platform Console oder mit dem gcloud-Befehlszeilentool aktualisieren.

Bei der Aktualisierung einer VM, auf der ein Container ausgeführt wird, führt Compute Engine die folgenden zwei Schritte durch:

  • Die Containerdeklaration auf der Instanz wird aktualisiert. Compute Engine speichert die aktualisierte Containerdeklaration in den Instanzmetadaten unter dem Metadatenschlüssel gce-container-declaration.
  • 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 VM-Instanz lädt das neue Image herunter und startet den Container beim Start der VM.

Konsole

  1. Rufen Sie die Seite "VM-Instanzen" auf.

    Zur Seite "VM-Instanzen"

  2. Klicken Sie auf den Namen der Instanz, die Sie aktualisieren müssen.
  3. Klicken Sie auf der Seite der Instanzdetails auf Bearbeiten.
  4. Geben Sie das neue Container-Image an und aktualisieren Sie nach Bedarf die Optionen zum Ausführen des Containers.
  5. Klicken Sie auf Speichern und neu starten, um die Änderungen zu speichern. Compute Engine speichert die Änderungen und startet die Instanz automatisch neu, um die Aktualisierung zu übernehmen. Nach dem Neustart der VM 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:1.13

Mit diesem Befehl wird als Container-Image gcr.io/cloud-marketplace/google/nginx1:1.13 festgelegt und die Instanz wird 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 setzen.

Nach dem Neustart der Instanz wird das neue Image heruntergeladen und der Container startet mit der aktualisierten Konfiguration.

Container in einer verwalteten Instanzgruppe bereitstellen

Für die Bereitstellung eines Containers in einer neuen verwalteten Instanzgruppe können Sie die Google Cloud Platform Console oder das gcloud-Befehlszeilentool verwenden. Gehen Sie dazu so vor:

  1. Erstellen Sie eine Instanzvorlage auf der Grundlage eines Docker-Images.
  2. Erstellen Sie eine verwaltete Instanzgruppe aus der neuen Instanzvorlage.

Konsole

Im folgenden Beispiel wird eine Instanzvorlage erstellt, die einen Container aus einem Nginx-Docker-Image von Google (gcr.io/cloud-marketplace/google/nginx1:1.12) in einer verwalteten Instanzgruppe bereitstellt. Wenn Sie ein anderes Docker-Image verwenden möchten, geben Sie dieses im nachstehenden Beispiel anstelle von gcr.io/cloud-marketplace/google/nginx1:1.12 an.

  1. Öffnen Sie die Seite mit den Instanzvorlagen.

    Seite "Instanzvorlagen" aufrufen

  2. Klicken Sie auf die Schaltfläche Instanzvorlage erstellen, um eine neue Instanzvorlage zu erstellen.
  3. Klicken Sie im Abschnitt Container das Kästchen Container-Image bereitstellen an.
  4. Geben Sie unter Container-Image einen Namen für das Docker-Image an und konfigurieren Sie bei Bedarf die Optionen zum Ausführen des Containers. Beispielsweise können Sie als Container-Image gcr.io/cloud-marketplace/google/nginx1:1.12 angeben.
  5. Klicken Sie auf Erstellen.

Erstellen Sie anschließend eine verwaltete Instanzgruppe aus der neuen Instanzvorlage.

gcloud

Erstellen Sie eine Instanzvorlage zum Ausführen von Docker-Images mit dem Befehl gcloud compute instance-templates create-with-container:

 gcloud compute instance-templates create-with-container [TEMPLATE_NAME] \
 --container-image [DOCKER_IMAGE]

Bei Bedarf können Sie 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. Mit einer aus dieser Vorlage erstellten VM-Instanz wird das Docker-Image gcr.io/cloud-marketplace/google/nginx1:1.12 beim Start der VM gestartet und ausgeführt.

 gcloud compute instance-templates create-with-container nginx-template \
     --container-image gcr.io/cloud-marketplace/google/nginx1:1.12

Erstellen Sie anschließend eine verwaltete Instanzgruppe aus der neuen Instanzvorlage.

Auf der Grundlage der neuen Instanzvorlage können Sie nun eine verwaltete Instanzgruppe erstellen. Beispiel: Erstellen Sie eine verwaltete Instanzgruppe mithilfe des gcloud-Tools und der soeben erstellten nginx-Vorlage mit folgendem Befehl:

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 aktualisieren und eine neue Version eines Docker-Images oder eines Container-Optimized OS-Images bereitstellen.

Verwaltete Instanzgruppe auf die neue Version eines Container-Images aktualisieren

Zur Bereitstellung der neuen Version eines Docker-Images in einer verwalteten Instanzgruppe können Sie den Managed Instance Group Updater verwenden. Die Vorgehensweise umfasst drei Schritte:

  1. Bereiten Sie das neue Docker-Image für die Bereitstellung vor.
  2. Erstellen Sie eine Instanzvorlage basierend auf dem neuen Docker-Image. Gehen Sie dabei genauso vor wie beim Erstellen einer containerbasierten Vorlage.
  3. Aktualisieren Sie die verwaltete Instanzgruppe auf der Grundlage der neuen Instanzvorlage mit dem Managed Instance Group Updater.

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 verwalteten Instanzgruppen mit Containern anwenden, ohne Ihr Docker-Image zu ändern. Für die Aktualisierung einer verwalteten Instanzgruppe auf eine neue Version des Container-Optimized OS-Images können Sie die Google Cloud Platform Console oder das gcloud-Befehlszeilentool verwenden. Dazu sind zwei Schritte erforderlich:

  1. Erstellen Sie eine Instanzvorlage basierend auf der aktuellen Version des Docker-Images. Gehen Sie dabei genauso vor, wie beim Erstellen einer containerbasierten Vorlage für eine neue verwaltete Instanzgruppe. Standardmäßig wird die jeweils neueste unterstützte Version des Container-Optimized OS-Images verwendet.
  2. Aktualisieren Sie die verwaltete Instanzgruppe auf der Grundlage der neuen Instanzvorlage mit dem Managed Instance Group Updater.

Über SSH mit einem Container verbinden

Sie können über SSH eine Verbindung zu einem Container auf einer VM herstellen. Führen Sie dazu mit dem gcloud-Tool den Befehl gcloud compute ssh mit dem Flag --container aus:

gcloud compute ssh [INSTANCE_NAME] --container [CONTAINER_NAME]

Dabei gilt:

  • [INSTANCE_NAME] ist der Name der VM-Instanz.
  • [CONTAINER_NAME] ist der Name des Containers.

Weitere Informationen zum Befehl gcloud compute ssh und seinen Argumenten.

Logs ansehen

Sie können drei Arten von Logs für Container aufrufen.

  1. Logs des Start-Agents, auch als konlet-Logs bekannt. Der Start-Agent parst die Konfiguration des Containers und führt Aufgaben für den Start des Containers auf einer Compute Engine-VM-Instanz aus.

  2. Docker-Ereignislogs dokumentieren Containerereignisse, einschließlich Containerstart- und -stoppereignisse. Diese Logs stehen zur Verfügung, wenn Sie COS 69 oder höher verwenden.

  3. Zu den Containerlogs gehört die Standardausgabe STDOUT von Anwendungen, die im Container ausgeführt werden.

Logs des Start-Agents aufrufen

Logs des Start-Agents sind in der seriellen Konsole, über den Systemdienst journald, der im Betriebssystem-Image enthalten ist, und über Stackdriver Logging verfügbar.

Logs des Start-Agents in der seriellen Konsole ansehen

Konsole

  1. Rufen Sie die Seite "VM-Instanzen" auf.

    Zur Seite "VM-Instanzen"

  2. Wählen Sie die VM-Instanz aus, deren Start-Agent-Logs Sie aufrufen möchten.
  3. Klicken Sie unter Logs auf Serieller Port 1 (Konsole), um die Logs der seriellen Konsole anzuzeigen.

gcloud

Mit dem Befehl get-serial-port-output können Sie Logs über den seriellen Port der Instanz aufrufen.

gcloud compute instances get-serial-port-output [INSTANCE_NAME]

Hierbei ist [INSTANCE_NAME] der Name der VM-Instanz.

Verwenden Sie zum Beispiel den folgenden Befehl, um die Ausgabe des seriellen Ports einer VM-Instanz mit dem Namen nginx-vm anzuzeigen:

gcloud compute instances get-serial-port-output nginx-vm

Logs des Start-Agents in journald aufrufen

  1. Stellen Sie eine Verbindung von Ihrer Instanz zu einem Container über SSH her.
  2. Rufen Sie mit dem Befehl sudo journalctl die Startlogs der VM und des Containers auf. Filtern Sie mit dem folgenden Befehl nach Logs des Container-Start-Agents (konlet):

    sudo journalctl -u konlet*
    

Logs des Start-Agents in Stackdriver aufrufen

Konsole

  1. Rufen Sie die Seite "VM-Instanzen" auf.

    Zur Seite "VM-Instanzen"

  2. Wählen Sie die VM-Instanz aus, deren Start-Agent-Logs Sie aufrufen möchten.
  3. Klicken Sie unter Logs auf Stackdriver Logging, um die Stackdriver-Logs aufzurufen.

  4. Geben Sie einen Suchfilter ein, um die Logs des Start-Agents abzurufen.

    Wenn Sie COS 68 oder niedriger nutzen, verwenden Sie folgenden Filter.

    resource.type="global"
    logName="projects/[PROJECT_ID]/logs/gcplogs-docker-driver"
    jsonPayload.container.imageName:"gcr.io/gce-containers/konlet"
    jsonPayload.instance.name="[INSTANCE_NAME]"
    

    Wenn Sie COS 69 oder höher nutzen, verwenden Sie folgenden Filter.

    resource.type="gce_instance"
    logName="projects/[PROJECT_ID]/logs/cos_system"
    jsonPayload.SYSLOG_IDENTIFIER="konlet-startup"
    jsonPayload._HOSTNAME="[INSTANCE_NAME]"
    

    Dabei gilt:

    • [PROJECT_ID] ist die ID des Projekts, das die Instanz enthält.
    • [INSTANCE_NAME] ist der Name der Instanz, deren Logs Sie aufrufen möchten.

gcloud

Verwenden Sie den Befehl gcloud logging read mit einem geeigneten Filter, um die Logs des Container-Start-Agents aufzurufen.

Wenn Sie COS 68 oder niedriger nutzen, verwenden Sie den folgenden Befehl und Filter.

gcloud logging read "resource.type=global AND \
    logName=projects/[PROJECT_ID]/logs/gcplogs-docker-driver AND \
    jsonPayload.instance.name=[INSTANCE_NAME]"

Wenn Sie COS 69 oder höher nutzen, verwenden Sie den folgenden Befehl und Filter.

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] ist die ID des Projekts, das die Instanz enthält.
  • [INSTANCE_NAME] ist der Name der Instanz, deren Logs Sie aufrufen möchten.

Rufen Sie beispielsweise mit dem folgenden Befehl die letzten zehn Logs des Start-Agents in Stackdriver für die VM-Instanz nginx-vm auf, die auf 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-Ereignis-Logs ansehen

Mit COS 69 oder höher können Sie Docker-Ereignis-Logs in journald und in Stackdriver ansehen.

Docker-Ereignislogs in journald aufrufen

  1. Stellen Sie eine Verbindung von Ihrer Instanz zu einem Container über SSH her.
  2. Führen Sie den Befehl sudo journalctl mit dem folgenden Filter aus, um Docker-Ereignislogs aufzurufen:

    sudo journalctl -u docker-events-collector
    

Docker-Ereignislogs in Stackdriver aufrufen

Konsole

  1. Rufen Sie die Seite "VM-Instanzen" auf.

    Zur Seite "VM-Instanzen"

  2. Wählen Sie die VM-Instanz aus, deren Start-Agent-Logs Sie aufrufen möchten.
  3. Klicken Sie unter Logs auf Stackdriver Logging, um die Stackdriver-Logs aufzurufen.

  4. 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] ist die ID des Projekts, das die Instanz enthält.
    • [INSTANCE_NAME] ist der Name der Instanz, deren Logs Sie aufrufen möchten.

gcloud

Rufen Sie mit dem Befehl gcloud logging read und einem geeigneten Filter die Docker-Ereignislogs auf:

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] ist die ID des Projekts, das die Instanz enthält.
  • [INSTANCE_NAME] ist der Name der Instanz, deren Logs Sie aufrufen möchten.

Rufen Sie beispielsweise mit dem folgenden Befehl die letzten zehn Docker-Ereignislogs in Stackdriver für die VM-Instanz nginx-vm auf, die auf 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

Container-Logs anzeigen

Konsole

  1. Rufen Sie die Seite "VM-Instanzen" auf.

    Zur Seite "VM-Instanzen"

  2. Wählen Sie die VM-Instanz aus, deren Start-Agent-Logs Sie aufrufen möchten.
  3. Klicken Sie unter Logs auf Stackdriver Logging, um die Stackdriver-Logs aufzurufen.

  4. Die Stackdriver Logging-Seite wird mit einem Standardsuchfilter geladen. Wenn Sie COS 69 oder höher verwenden, überprüfen Sie den Filter und kopieren Sie den Wert für resource.labels.instance_id. Dieser wird später verwendet.

  5. Aktualisieren Sie den Suchfilter, um die Logs des Containers abzurufen.

    Wenn Sie COS 68 oder niedriger nutzen, verwenden Sie folgenden Filter.

    logName="projects/[PROJECT_ID]/logs/gcplogs-docker-driver"
    jsonPayload.container.name="/[INSTANCE_NAME]"
    

    Dabei gilt:

    • [PROJECT_ID] ist die ID des Projekts, das die Instanz enthält.
    • [INSTANCE_NAME] ist der Name der Instanz, deren Logs Sie aufrufen möchten.

    Wenn Sie COS 69 oder höher nutzen, verwenden Sie folgenden Filter:

    resource.type="gce_instance"
    logName="projects/[PROJECT_ID]/logs/cos_containers"
    resource.labels.instance_id="[INSTANCE_ID]"
    

    Dabei gilt:

    • [PROJECT_ID] ist die ID des Projekts, das die Instanz enthält.
    • [INSTANCE_ID] ist die ID der Instanz, deren Logs Sie aufrufen möchten.

gcloud

Verwenden Sie den Befehl gcloud logging read mit einem entsprechenden Filter, um die Logs des Containers aufzurufen.

Wenn Sie COS 68 oder niedriger nutzen, verwenden Sie den folgenden Befehl und Filter.

gcloud logging read "logName=projects/[PROJECT_ID]/logs/gcplogs-docker-driver AND \
    jsonPayload.container.name=/[INSTANCE_NAME]"

Wenn Sie COS 69 oder höher nutzen:

  1. 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)"
    

    Dabei gilt:

    • [ZONE] ist die Zone, in der sich die Instanz befindet.
    • [INSTANCE_NAME] ist der Name der Instanz, deren Logs Sie aufrufen möchten.
  2. 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] ist die ID des Projekts, das die Instanz enthält.
    • [INSTANCE_ID] ist die ID der Instanz.

    Verwenden Sie beispielsweise den folgenden Befehl, um die letzten zehn Logs des Containers in Stackdriver für eine VM-Instanz anzusehen, auf der COS 70 ausgeführt wird, die sich in my-project befindet und deren Instanz-ID 555123456789012345 lautet.

    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

VM-Instanzen oder Instanzvorlagen mit Containern werden standardmäßig mit dem jeweils neuesten unterstützten containeroptimierten Image erstellt. Dieses Image ist Bestandteil des Projekts cos-cloud.

Sie können diese Standardauswahl überschreiben und ein anderes Image der Version 62 oder höher aus den Image-Familien cos-stable, cos-beta oder cos-dev oder eine dieser Image-Familien (alle im Projekt cos-cloud) verwenden.

Diese Image-Familien enthalten containeroptimierte Images aus drei Releasekanälen:

  • Der Kanal dev enthält die neuesten Änderungen und wird regelmäßig aktualisiert.
  • Der Kanal beta ist ein qualifiziertes Image in der Betaphase und wird seltener aktualisiert.
  • Der Kanal stable bietet einen ausführlicher getesteten und unterstützten Release nur mit seltenen und wichtigen Updates (falls erforderlich).

Wenn Sie zum Beispiel das gcloud-Tool verwenden, setzen Sie das Flag --image, um das containeroptimierte Standard-Image zu überschreiben, oder das Flag --image-family, um das zum Zeitpunkt der VM-Erstellung neueste Image aus der angegebenen Familie zu verwenden.

Im folgenden Beispiel wird eine VM-Instanz mit Container basierend auf dem neuesten Image aus der Image-Familie cos-dev erstellt:

 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.12

Firewallregeln konfigurieren

Container-VMs starten Container mit dem Netzwerk im Hostmodus. Ein Container gehört zum Host-Netzwerk-Stack, d. h., alle Schnittstellen des Hosts sind für den Container zugänglich.

Die Firewallregeln der Google Cloud Platform blockieren standardmäßig alle eingehenden Verbindungen zu einer VM-Instanz und erlauben alle von dieser Instanz ausgehenden Verbindungen.

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
  • ENTRYPOINT des Containers überschreiben (Standardbefehl, der beim Containerstart ausgeführt wird)
  • Argumente an den Befehl ENTRYPOINT des Containers übergeben
  • Den Container im privilegierten Modus ausführen
  • Innerhalb des Containers ein Hostverzeichnis oder tmpfs als Datenvolumen bereitstellen
  • Umgebungsvariablen festlegen
  • Einen Zwischenspeicher für STDIN in der Containerlaufzeit zuweisen
  • Ein Pseudoterminal zuordnen

Weitere Informationen finden Sie unter Optionen zum Ausführen von Containern konfigurieren

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation