[Yandex Cloud documentation](../index.md) > [Yandex Container Solution](index.md) > Getting started

# Creating a VM from a Container Optimized Image

Create a VM from a [Container Optimized Image](concepts/index.md) and run a Docker container on it.

## Getting started {#before-you-begin}

If the required Docker image has been pushed to Container Registry, create a [service account](../iam/operations/sa/create.md) with the [container-registry.images.puller](../container-registry/security/index.md#choosing-roles) role for the registry in use. A Container Optimized Image VM will pull the Docker image from the registry under this account.

## Create a Docker container VM from a Container Optimized Image {#create-vm}

{% list tabs group=instructions %}

- Management console {#console}

  1. In the [management console](https://console.yandex.cloud), select the [folder](../resource-manager/concepts/resources-hierarchy.md#folder) where you want to create your VM.
  1. In the list of services, select **Compute Cloud**.
  1. In the left-hand panel, select ![image](../_assets/console-icons/server.svg) **Virtual machines**.
  1. Click **Create virtual machine**.
  1. Under **Boot disk image**, navigate to the **Container Solution** tab.
  1. Click **Configure**.
  1. In the **Docker container settings** window that opens, set the parameters using suggestions:

      1. Specify the **Docker image** for running the Docker container on the VM.
      1. Select the **Restart policy** field value for the Docker container:

          * `Always`: Always restart the Docker container when it stops.
          * `On-Failure`: Only restart the Docker container if it shuts down with a non-zero return code.
          * `Never`: Do not restart the Docker container automatically.

      1. Fill in the remaining fields, if required.
      1. Click **Apply**.

  1. Follow [this guide](../compute/operations/vm-create/create-linux-vm.md) to configure the remaining VM parameters.

- CLI {#cli}

  If you do not have the Yandex Cloud CLI yet, [install and initialize it](../cli/quickstart.md#install).

  The folder used by default is the one specified when [creating](../cli/operations/profile/profile-create.md) the CLI profile. To change the default folder, use the `yc config set folder-id <folder_ID>` command. You can also specify a different folder for any command using `--folder-name` or `--folder-id`. If you access a resource by its name, the search will be limited to the default folder. If you access a resource by its ID, the search will be global, i.e., through all folders based on access permissions.

  1. View the description of the CLI command for creating a VM from a Container Optimized Image:

     ```bash
     yc compute instance create-with-container --help
     ```

  1. Create a Container Optimized Image VM:

     ```bash
     yc compute instance create-with-container \
       --name my-vm \
       --zone ru-central1-b \
       --ssh-key ssh-key.pub \
       --service-account-name my-robot \
       --platform standard-v3 \
       --create-boot-disk size=30 \
       --public-ip \
       --container-name=my-app \
       --container-image=cr.yandex/mirror/ubuntu:24.04 \
       --container-command=sleep \
       --container-arg="1000" \
       --container-env='"KEY-GROUP={key1:value1,key2:value2,key3:value3}"',KEY4=VALUE4,KEY5=VALUE5 \
       --container-privileged
     ```

     Where:
     * `--name`: VM name.
     * `--zone`: Availability zone.
     * `--ssh-key`: Contents of the [public key](../compute/quickstart/quick-create-linux.md#create-ssh) file.
     * `--service-account-name`: Service account name.
     * `--create-boot-disk size`: Boot disk size.

        To get the minimum boot disk size required for installing an image, run this command:
        * `yc compute image get-latest-from-family container-optimized-image --folder-id standard-images` if you are installing a Container Optimized Image.
        * `yc compute image get-latest-from-family container-optimized-image-gpu --folder-id standard-images` if you are installing a GPU Container Optimized Image.
        
        You can find the minimum boot disk size in the `min_disk_size` property.

     * `--public-ip`: Public IP address allocated to the VM.
     * `--container-name`: Docker container name.
     * `--container-image`: Name of the Docker image for running the Docker container.
     * `--container-command`: Command to run when you start the Docker container.
     * `--container-arg`: Parameters for the command specified in `--container-command`.
     * `--container-env`: Environment variables available in the Docker container.

        Use single and double quotes at the same time for `key:value` pairs, e.g., `--container-env='"KEY-GROUP={key1:value1,key2:value2,key3:value3}"'`.
     * `--container-privileged`: Run the Docker container in privileged mode.

     Result:

     ```text
     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](https://console.yandex.cloud). For more information about working with VMs, see our [step-by-step guides](../compute/operations/index.md).

{% endlist %}

#### What's next {#what-is-next}

* Read the detailed description of a [Container Optimized Image](concepts/index.md).
* To learn what else you can do with a Container Optimized Image, see [our step-by-step guides](tutorials/index.md).