Lifecycle

In HyperContainer, a Pod is encapsulated in a VM. Since v0.8, HyperContainer simplified the model of Pod and underlying VM (as well as the state machine). The lifecycle of Pod and VM are no longer managed separately.

A Pod can be launched either explicitly:

➜ sudo ./hyperctl run -p podfile.json

Or, implicitly:

➜ sudo ./hyperctl run -d nginx
POD id is nginx-8530075287

In both cases, Pods and VMs are indivisible. Hyper will automatically create a new VM instance to host the Pod, and the Pod will be Running. There could be zero, one, or more containers in a Pod. And you can create, start, stop, and remove containers in/from a Pod.

➜ sudo ./hyperctl create -c -d nginx-8530075287 busybox
Container ID is a8fd34f686e6587979936df880b9e9144fefd895d19560493d2028aa82c47f0c
➜ sudo ./hyperctl list container
Container ID                                                       Name                 POD ID              Status
6e8c08420389a165682586380fa35432f5922287b9aec34059ed1ff68b3f1623   nginx-8530075287     nginx-8530075287    running
a8fd34f686e6587979936df880b9e9144fefd895d19560493d2028aa82c47f0c   busybox-2602968228   nginx-8530075287    pending
➜ sudo ./hyperctl start -c busybox-2602968228
Successfully started container busybox-2602968228
➜ sudo ./hyperctl list container
Container ID                                                       Name                 POD ID              Status
a8fd34f686e6587979936df880b9e9144fefd895d19560493d2028aa82c47f0c   busybox-2602968228   nginx-8530075287    running
6e8c08420389a165682586380fa35432f5922287b9aec34059ed1ff68b3f1623   nginx-8530075287     nginx-8530075287    running
➜ sudo ./hyperctl stop -c busybox-2602968228 nginx-8530075287
➜ sudo ./hyperctl list container
Container ID                                                       Name                 POD ID              Status
6e8c08420389a165682586380fa35432f5922287b9aec34059ed1ff68b3f1623   nginx-8530075287     nginx-8530075287    succeeded
a8fd34f686e6587979936df880b9e9144fefd895d19560493d2028aa82c47f0c   busybox-2602968228   nginx-8530075287    succeeded
➜ sudo ./hyperctl rm -c busybox-2602968228 nginx-8530075287
container busybox-2602968228 is successfully deleted!
container nginx-8530075287 is successfully deleted!
➜ sudo ./hyperctl list container
Container ID        Name                POD ID              Status
➜ sudo ./hyperctl list
POD ID              POD Name            VM name             Status
nginx-8530075287    nginx-8530075287    vm-pqEnBvQVdS       running

And you could stop or remove the Pod.

➜ sudo ./hyperctl rm nginx-8530075287
Pod(nginx-8530075287) is successfully deleted!