향상된 Linux 서비스 관리자를 확인합니다. v2kServiceManager 플래그는 기본적으로 true로 설정됩니다. 하지만 Migrate to Containers에서 서비스 관리자로 지원되지 않는 시스템 서비스를 감지하면 알림이 표시되고 v2kServiceManager 플래그가 false로 설정됩니다.
플래그가 false로 설정되었으면 마이그레이션에 서비스를 지원하는 기존 런타임이 사용됩니다.
다음 알림은 지원되지 않는 서비스와 함께 제공됩니다.
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.
지원되지 않는 서비스를 찾았으면 플래그를 수동으로 true로 설정할 수도 있습니다.
이 경우 생성된 이미지에 실행될 수 없는 지원되지 않는 서비스를 보관하도록 선택하거나 마이그레이션 계획에서 삭제하여 서비스를 제외시킬 수 있습니다.
여기서 gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL은 컨테이너 이미지의 위치를 지정합니다.
다음 명령어를 사용하여 Cloud Run에 컨테이너를 배포합니다.
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
--set-env-vars 속성은 HC_V2K_SERVICE_MANAGER 환경 변수를 true로 설정하여 향상된 Linux 서비스 관리자를 사용 설정합니다.
--port 속성은 요청이 컨테이너로 전송되는 포트를 지정합니다. 기본 포트는 8080입니다.
예시: Cloud Run에 빠른 시작 컨테이너 배포
현재의 빠른 시작 가이드를 사용하여 간단한 웹 서버가 포함된 컨테이너를 마이그레이션한 후 Cloud Run에 배포합니다.
빠른 시작 프로세스에서 변경해야 하는 유일한 사항은 다음과 같습니다.
마이그레이션 계획을 검토하는 VM 마이그레이션의 3단계에서 마이그레이션 계획의 v2kServiceManager를 true로 설정한 다음 계획을 저장합니다.
v2kServiceManager:true
마이그레이션이 완료되면 편집기에서 deployment_spec.yaml 파일을 열어 컨테이너의 위치를 확인합니다. 예를 들어 다음과 비슷한 내용이 표시됩니다.
마이그레이션된 워크로드 배포 섹션에서 다음 명령어를 사용하여 컨테이너 이미지를 Cloud Run에 배포합니다.
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
마이그레이션된 컨테이너의 웹 서버는 포트 80의 요청을 리슨하므로 컨테이너를 배포할 때 해당 포트를 지정해야 합니다.
Cloud Run 서비스의 URL이 포함된 다음과 같은 응답이 표시됩니다.
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
Cloud Shell에서 서비스 URL로 사용자 인증 정보를 전달하여 컨테이너에 요청합니다.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 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)."]]