I have a Docker container that performs a single large computation. This computation requires lots of memory and takes about 12 hours to run.
I can create a Google Compute Engine VM of the appropriate size and use the "Deploy a container image to this VM instance" option to run this job perfectly. However once the job is finished the container quits but the VM is still running (and charging).
How can I make the VM exit/stop/delete when the container exits?
When the VM is in its zombie mode only the stackdriver containers are left running:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bfa2feb03180 gcr.io/stackdriver-agents/stackdriver-logging-agent:0.2-1.5.33-1-1 "/entrypoint.sh /u..." 17 hours ago Up 17 hours stackdriver-logging-agent
161439a487c2 gcr.io/stackdriver-agents/stackdriver-metadata-agent:0.2-0.0.17-2 "/bin/sh -c /opt/s..." 17 hours ago Up 17 hours 8000/tcp stackdriver-metadata-agent
I create the VM like this:
gcloud beta compute --project=abc instances create-with-container vm-name
--zone=us-central1-c --machine-type=custom-1-65536-ext
--network=default --network-tier=PREMIUM --metadata=google-logging-enabled=true
--maintenance-policy=MIGRATE
--service-account=xyz
--scopes=https://www.googleapis.com/auth/cloud-platform
--image=cos-stable-69-10895-71-0 --image-project=cos-cloud --boot-disk-size=10GB
--boot-disk-type=pd-standard --boot-disk-device-name=vm-name
--container-image=gcr.io/abc/my-image --container-restart-policy=on-failure
--container-command=python3
--container-arg="a" --container-arg="b" --container-arg="c"
--labels=container-vm=cos-stable-69-10895-71-0
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…