Creating a VM from a Container Optimized Image
Create a VM from a Container Optimized Image and run a Docker container on it.
Getting started
If the required Docker image is pushed to Yandex Container Registry, create a service account with the container-registry.images.puller role for the registry in use. A Container Optimized Image VM will pull the Docker image from the registry on behalf of this account.
Create a VM with a Docker container from a Container Optimized Image
- In the management console
, select the folder to create your VM in. - In the list of services, select Compute Cloud.
- Click Create virtual machine.
- Under Image/boot disk selection, go to the Container Solution tab.
- Click Configure.
- In the Docker container settings window that opens, set the parameters using suggestions:
- (Optional) Enter the Name of the Docker container to run on the VM. The naming requirements are as follows:
- The name must be from 3 to 63 characters long.
- It may contain Latin letters, numbers, and hyphens.
- It must start with a letter. The last character cannot be a hyphen.
- Specify the Docker image to be used to run the Docker container on the VM. You can do this in one of the following ways:
- By selecting one of the available images. To do this, start typing the image name in the search bar. The image search reads all the available cloud folders.
- By specifying the image name manually. To do this, click Enter link and enter the image name. You can specify an image from Container Registry or any publicly available Docker image library (such as Docker Hub
).
- (Optional) In the Command field, specify the executable file to run when the Docker container starts.
- (Optional) Set Command arguments.
- (Optional) Specify Environment variables in
key:value
format, which are available in the Docker container. - Select the Restart policy field value for the Docker container:
- Always: Always restart the Docker container when it stops.
- Never: Do not restart the Docker container automatically.
- On-Failure: Restart the Docker container only if it shuts down with a non-zero return code.
- (Optional) Enable Attach a TTY to the Docker container to use the command shell in the Docker container.
- (Optional) Enable Allocate an stdin buffer for a running Docker container to link the input stream to the running Docker container.
- (Optional) Enable Run Docker container in privileged mode to allow the Docker container processes to access all VM resources.
Click Apply.
- (Optional) Enter the Name of the Docker container to run on the VM. The naming requirements are as follows:
- Set the remaining VM parameters by following this guide.
If you do not have the Yandex Cloud command line interface yet, install and initialize it.
The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name
or --folder-id
parameter.
To create a VM and set Docker container parameters via the YC CLI:
-
View a description of the command:
yc compute instance create-with-container --help
-
Run this command:
yc compute instance create-with-container \ --name my-vm \ --zone ru-central1-b \ --ssh-key ssh-key.pub \ --service-account-name my-robot \ --create-boot-disk size=30 \ --public-ip \ --platform standard-v3 \ --container-name=my-app \ --container-image=cr.yandex/mirror/ubuntu:16.04 \ --container-command=sleep \ --container-arg="1000" \ --container-env=KEY1=VAL1,KEY2=VAL2 \ --container-privileged
Where:
--name
: VM name.--zone
: Availability zone.--ssh-key
: Contents of the public key file.--service-account-name
: Name of the service account.--create-boot-disk size
: Boot disk size. It must be at least 30 GB.--public-ip
: Public IP address allocated to the VM.--container-name
: Name of the Docker container.--container-image
: Name of the Docker image used to launch the Docker container.--container-command
: Command to run upon Docker container launch.--container-arg
: Parameters for the command specified in--container-command
.--container-env
: Environment variables available in the Docker container.--container-privileged
: Launching the Docker container in privileged mode.
Result:
done (17s) id: epdbf646ge5q******** folder_id: b1g88tflru0e******** created_at: "2023-03-13T09:44:03Z" name: my-vm ...
Once created, the VM will appear in the VM list under Compute Cloud in the management console
If you do not have the Yandex Cloud command line interface yet, install and initialize it.
The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name
or --folder-id
parameter.
To create a VM and set Docker container parameters using a specification file:
-
View a description of the command:
yc compute instance create-with-container --help
-
Create a Docker container specification file. Save the following data to a file named
docker-spec.yaml
:spec: containers: - command: - sleep args: - 100000 image: cr.yandex/mirror/ubuntu:20.04 name: my-container securityContext: privileged: true
-
Run this command:
yc compute instance create-with-container \ --coi-spec-file docker-spec.yaml \ --name my-vm \ --zone ru-central1-b \ --ssh-key ssh-key.pub \ --create-boot-disk size=30 \ --service-account-name my-service-account \ --public-ip
Where:
--coi-spec-file
: Path to the Docker container specification file.--name
: VM name.--zone
: Availability zone.--ssh-key
: Contents of the public key file.--create-boot-disk size
: Boot disk size. It must be at least 30 GB.--service-account-name
: Name of the service account.--public-ip
: Public IP address allocated to the VM.
Result:
done (1m40s) id: epde18u4mahl******** folder_id: b1g7gvsi89m3******** created_at: "2023-03-13T13:50:17Z" name: my-vm ...
Once created, the VM will appear in the VM list under Compute Cloud in the management console