Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Container in Cloud Run bereitstellen
Wenn Sie den erweiterten Linux-Dienstmanager verwenden, der standardmäßig angeboten wird, um Ihre Containerarbeitslasten zu migrieren, können Sie den Container dann in Cloud Run bereitstellen, ohne zusätzliche Änderungen am Container vornehmen zu müssen.
Laden Sie den Migrationsplan herunter. Der Migrationsplan wird durch AppXGenerateArtifactsFlow dargestellt:
Beispiel: Bei einer Migration mit dem Namen „my-migration“:
migctl migration get my-migration
Bearbeiten Sie den heruntergeladenen Migrationsplan my-migration.yaml in einem Texteditor.
Prüfen Sie den erweiterten Linux-Dienstmanager. Das Flag v2kServiceManager ist standardmäßig auf true gesetzt. Wenn Migrate to Containers jedoch einen Systemdienst erkennt, der nicht vom Dienstmanager unterstützt wird, werden Sie benachrichtigt und das Flag v2kServiceManager wird auf false gesetzt.
Wenn das Flag false lautet, verwendet die Migration eine Legacy-Laufzeit, die Ihren Dienst unterstützt.
Die folgende Benachrichtigung wird neben dem nicht unterstützten Dienst bereitgestellt:
Service is not supported by v2k service manager, therefore legacy runtime
will be used instead of v2k service manager, and migrated workload would
not fit running on Autopilot clusters of Cloudrun.
Wenn ein nicht unterstützter Dienst gefunden wird, können Sie das Flag auch manuell auf true setzen.
In diesem Fall können Sie entweder den nicht unterstützten Dienst für das generierte Image beibehalten, wo er möglicherweise nicht ausgeführt wird, oder den Dienst durch Entfernen aus dem Migrationsplan ausschließen.
Setzen Sie das Flag auf true zurück, um den neuen Dienstmanager zu aktivieren:
v2kServiceManager:true
Nehmen Sie gegebenenfalls weitere Anpassungen vor, die für die Migration erforderlich sind, wie unter Migrationsplan anpassen beschrieben.
Wenn die Änderungen abgeschlossen sind, speichern Sie die Datei.
Bearbeiten Sie die neue Datei services-config.yaml, um die Initialisierungsattribute des Containers zu konfigurieren. Speichern Sie die Datei und erstellen Sie das Container-Image neu, um die Änderungen zu übernehmen.
Nachdem Sie die Migrationsartefakte generiert haben, öffnen Sie die Datei deployment_spec.yaml in einem Editor, um den Speicherort des Container-Images zu ermitteln. Die Ausgabe sollte in etwa so aussehen:
Dabei gibt gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL den Speicherort des Container-Images an.
Verwenden Sie den folgenden Befehl, um den Container in Cloud Run bereitzustellen:
gcloud run deploy my-runtime
--image gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL
--region REGION --platform managed
--set-env-vars=HC_V2K_SERVICE_MANAGER=true --port PORT
Das Attribut --set-env-vars setzt die Umgebungsvariable HC_V2K_SERVICE_MANAGER auf true, um den optimierten Linux-Dienstmanager zu aktivieren.
Das Attribut --port gibt den Port an, über den Anfragen an den Container gesendet werden. Der Standardport ist 8080.
Beispiel: Kurzanleitungs-Container in Cloud Run bereitstellen
Mit der aktuellen Kurzanleitung können Sie einen Container mit einem einfachen Webserver migrieren und dann in Cloud Run bereitstellen.
Die einzigen Änderungen, die Sie am Schnellstart vornehmen müssen, sind:
In Schritt 3 der VM-Migration, bei der Sie den Migrationsplan prüfen, setzen Sie die Annotation v2kServiceManager im Migrationsplan auf true und speichern dann den Plan:
v2kServiceManager:true
Öffnen Sie nach Abschluss der Migration die Datei deployment_spec.yaml in einem Editor, um den Speicherort des Containers zu ermitteln. Die Ausgabe sollte in etwa so aussehen:
gcloud run deploy my-runtime
--image gcr.io/PROJECT_NAME/quickstart-instance:LABEL
--region REGION --platform managed
--set-env-vars=HC_V2K_SERVICE_MANAGER=true --port 80
Der Webserver im migrierten Container wartet auf Anfragen an Port 80 und muss diesen Port bei der Bereitstellung des Containers angeben.
Die folgende Antwort sollte die URL des Cloud Run-Dienstes enthalten:
Allow unauthenticated invocations to [my-runtime] (y/N)? yDeploying container to Cloud Run service [my-runtime] in project [PROJECT_NAME] region [REGION]Deploying new service... Done.✓ Creating Revision…✓ Routing traffic…Setting IAM Policy…Done.Service [my-runtime] revision [my-runtime-00001-sas] has been deployed and is serving 100 percent of traffic.Service URL:https://my-runtime-s5ahdq-uc.a.run.app
Stellen Sie in Cloud Shell eine Anfrage an den Container, indem Sie die Dienst-URL verwenden und Ihre Anmeldedaten übergeben:
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-09-04 (UTC)."],[],[],null,["# Deploy containers to Cloud Run\n==============================\n\nIf you use the enhanced Linux service manager that is offered by default to\nmigrate your container workloads, you can then deploy the container\non [Cloud Run](/run/docs) without having to make any additional\nchanges to the container.\n| **Note:** The container workload must be stateless to be deployed on Cloud Run. You cannot deploy a stateful container. See [Developing your service](/run/docs/developing) for more information, including the complete list of requirements for deploying containers on Cloud Run.\n\nTo deploy your container on Cloud Run:\n\n1. [Install Migrate to Containers version 1.15.0](/migrate/containers/docs/install-overview).\n\n2. [Add a migration source](/migrate/containers/docs/adding-a-migration-source) and\n [create a migration](/migrate/containers/docs/creating-a-migration) just as you do\n today with the existing runtime.\n\n3. [Customize your migration plan](/migrate/containers/docs/customizing-a-migration-plan) as necessary.\n\n | **Note:** Prior to Migrate to Containers 1.10, use of the enhanced Linux service manager was disabled by default. If you are using Migrate to Containers 1.9 or older, you should have `v2kServiceManager` set to `true` in your migration plan (`my-migration.yaml`). If the enhanced Linux service manager is disabled for you, check your `services.yaml` file for comments about services that may not work with your new runtime. If you would like to include any of the disabled services, contact your support channel.\n 1. Download the migration plan. The migration plan is represented by\n [AppXGenerateArtifactsFlow](https://github.com/GoogleCloudPlatform/migrate-to-containers/blob/main/references/crds/m2c-crds.md#appxgenerateartifactsflow).\n\n For example, for a migration named \"my-migration\": \n\n ```\n migctl migration get my-migration\n ```\n 2. Open the downloaded migration plan, `my-migration.yaml`, in a text editor.\n\n 3. Verify the enhanced Linux service manager. The `v2kServiceManager` flag is\n set to `true` by default. However, if Migrate to Containers\n detects a system service that is not supported by the service\n manager, you will be alerted and the `v2kServiceManager` flag will be set to `false`.\n When the flag is `false` the migration will use a legacy runtime which supports your\n service.\n\n The following alert is provided alongside the unsupported service: \n\n ```\n Service is not supported by v2k service manager, therefore legacy runtime\n will be used instead of v2k service manager, and migrated workload would\n not fit running on Autopilot clusters of Cloudrun.\n ```\n\n When an unsupported service is found, you can also choose to manually set the flag to `true`.\n In this instance, you can either choose to keep the unsupported service on the generated image\n where it may not run or you can exclude the service by removing it from the migration plan.\n\n To enable the new service manager, reset the flag to `true`: \n\n ```yaml\n v2kServiceManager: true\n ```\n 4. Perform any other customizations necessary for your migration as described\n in [Customize the migration plan](/migrate/containers/docs/customizing-a-migration-plan).\n\n 5. When your edits are complete, save the edited file.\n\n 6. Upload the edited migration plan:\n\n ```\n migctl migration update my-migration --main-config my-migration.yaml\n ```\n4. [Generate](/migrate/containers/docs/executing-a-migration) and\n [review the migration artifacts](/migrate/containers/docs/review-deployment-files)\n just as you do today with the existing runtime.\n\n5. Edit the new `services-config.yaml` file to configure the initialization properties\n of the container. Save the file and rebuild your container image to apply the changes.\n\n See [Using services-config.yaml](/migrate/containers/docs/services-config) for more information about\n how to edit your `services.yaml` file.\n6. After you generate the migration artifacts, open the `deployment_spec.yaml` file\n in an editor to determine the location of the container image. For example, you should\n see something similar to the following:\n\n ```yaml\n spec:\n containers:\n - image: gcr.io/\u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e/\u003cvar translate=\"no\"\u003eIMAGE_NAME\u003c/var\u003e:\u003cvar translate=\"no\"\u003eLABEL\u003c/var\u003e\n ```\n\n Where `gcr.io/`\u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e`/`\u003cvar translate=\"no\"\u003eIMAGE_NAME\u003c/var\u003e`:`\u003cvar translate=\"no\"\u003eLABEL\u003c/var\u003e\n specifies the location of the container image.\n7. Use the following command to deploy the container on Cloud Run:\n\n ```\n gcloud run deploy my-runtime\n --image gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL\n --region REGION --platform managed\n --set-env-vars=HC_V2K_SERVICE_MANAGER=true --port PORT \n ```\n\n The `--set-env-vars` property sets the `HC_V2K_SERVICE_MANAGER` environment variable\n to `true` to enable the enhanced Linux service manager.\n\n The `--port` property specifies the port where requests is sent\n to the container. The default port is 8080.\n\n### Example: Deploying the Quickstart container on Cloud Run\n\nUse the current [Quickstart](/migrate/containers/docs/migrate-vm) guide to migrate a\ncontainer containing a simple web server and then deploy it on Cloud Run.\nThe only changes that you have to make to the Quickstart process are:\n\n1. In Step 3 of [Migrating the VM](/migrate/containers/docs/migrate-vm#migrating_the_vm),\n where you review the migration plan, set `v2kServiceManager`\n to `true` in the migration plan and then save the plan:\n\n ```yaml\n v2kServiceManager: true\n ```\n2. After the migration completes, open the `deployment_spec.yaml` file in an editor\n to determine the location of the container. For example, you should see something similar to the following:\n\n ```yaml\n spec:\n containers:\n - image: gcr.io/\u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e/quickstart-instance:\u003cvar translate=\"no\"\u003eLABEL\u003c/var\u003e\n ```\n3. In the [Deploying the migrated workload](/migrate/anthos/docs/migrate-vm#deploying_the_migrated_workload) section,\n deploy the container image to Cloud Run by using the command:\n\n ```\n gcloud run deploy my-runtime\n --image gcr.io/PROJECT_NAME/quickstart-instance:LABEL\n --region REGION --platform managed\n --set-env-vars=HC_V2K_SERVICE_MANAGER=true --port 80 \n ```\n\n The web server in the migrated container listens for requests on port 80 so\n make sure to specify that port when deploying the container.\n\n You should see the following response, which includes the URL of the Cloud Run service: \n\n ```yaml\n Allow unauthenticated invocations to [my-runtime] (y/N)? y\n\n Deploying container to Cloud Run service [my-runtime] in project [\u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e] region [\u003cvar translate=\"no\"\u003eREGION\u003c/var\u003e]\n Deploying new service... Done.\n ✓ Creating Revision...\n ✓ Routing traffic...\n Setting IAM Policy...\n Done.\n Service [my-runtime] revision [my-runtime-00001-sas] has been deployed and is serving 100 percent of traffic.\n Service URL: https://my-runtime-s5ahdq-uc.a.run.app\n ```\n4. From Cloud Shell, make a request to the container by using its service URL,\n passing in your credentials:\n\n ```\n curl -H \"Authorization: Bearer $(gcloud auth print-identity-token)\" https://my-runtime-s5ahdq-uc.a.run.app\n ```\n\n You should now see the \"Hello World!\" page.\n\nWhat's next\n-----------\n\n- Learn how to [use services-config.yaml](/migrate/containers/docs/services-config)."]]