Yandex Cloud
Search
Contact UsGet started
  • Blog
  • Pricing
  • Documentation
  • All Services
  • System Status
    • Featured
    • Infrastructure & Network
    • Data Platform
    • Containers
    • Developer tools
    • Serverless
    • Security
    • Monitoring & Resources
    • ML & AI
    • Business tools
  • All Solutions
    • By industry
    • By use case
    • Economics and Pricing
    • Security
    • Technical Support
    • Customer Stories
    • Cloud credits to scale your IT product
    • Gateway to Russia
    • Cloud for Startups
    • Education and Science
    • Yandex Cloud Partner program
  • Blog
  • Pricing
  • Documentation
© 2025 Direct Cursus Technology L.L.C.
Tutorials
    • All tutorials
    • Setting up a Managed Service for PostgreSQL connection from a container in Serverless Containers
    • Creating a VM from a Container Optimized Image
    • Creating a VM from a Container Optimized Image with an additional volume for a Docker container
    • Creating an instance group from a Container Optimized Image with multiple Docker containers
    • Creating an instance group from a Container Optimized Image
    • Creating a VM from a Container Optimized Image with multiple Docker containers
    • Updating a Container Optimized Image VM
    • Configuring data output from a Docker container to a serial port

In this article:

  • Getting started
  • Create a VM from a Container Optimized Image with an additional volume for a Docker container
  1. Container infrastructure
  2. Creating a VM from a Container Optimized Image with an additional volume for a Docker container

Creating a VM from a Container Optimized Image with an additional volume for a Docker container

Written by
Yandex Cloud
Updated at May 5, 2025
  • Getting started
  • Create a VM from a Container Optimized Image with an additional volume for a Docker container

In this tutorial, you will create a VM from a Container Optimized Image that contains a Docker container with a running MongoDB instance and an additional 10 GB volume attached.

Getting startedGetting 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 from a Container Optimized Image with an additional volume for a Docker containerCreate a VM from a Container Optimized Image with an additional volume for a Docker container

CLI

If you do not have the Yandex Cloud CLI yet, install and initialize it.

The folder specified when creating the CLI profile is used by default. To change the default folder, use the yc config set folder-id <folder_ID> command. You can specify a different folder using the --folder-name or --folder-id parameter.

  1. See the description of the CLI command for creating a VM:

    yc compute instance create-with-container --help
    
  2. Prepare the Docker Compose specification. Save the following data to the docker-compose.yaml file:

    version: '3.4'
    services:
      app2:
        container_name: container-name
        image: "mongo:latest"
        ports:
          - "27017:27017"
        restart: always
        volumes:
          - /home/yc-user/coi-data:/data
    x-yc-disks:
      - device_name: coi-data
        fs_type: ext4
        host_path: /home/yc-user/coi-data
    

    When creating a VM via the CLI, a default user is created: yc-user.

  3. Create a VM with multiple disks:

    yc compute instance create-with-container \
      --name coi-vm \
      --zone ru-central1-a \
      --create-boot-disk size=30 \
      --create-disk name=data-disk,size=10,device-name=coi-data \
      --network-interface subnet-name=<subnet_name>,nat-ip-version=ipv4 \
      --ssh-key <path_to_public_part_of_SSH_key> \
      --docker-compose-file docker-compose.yaml
    

    Where:

    • --name: VM name.

    • --zone: Availability zone.

    • --create-boot-disk: VM disk parameters.

      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.

    • --network-interface: Network parameters:

      • subnet-name: Name of the subnet to host the VM.
      • nat-ip-version: Public IPv4 address assignment method.
    • --ssh-key: Path to the file with the public key.

    • --docker-compose-file: YAML file with container specification.

    Once created, the VM will appear in the VM list under Compute Cloud in the management console.

  4. Check the result.

    1. Connect to the VM via SSH.

    2. Get the ID of the running Docker container:

      sudo docker ps -a
      

      Result:

      CONTAINER ID  IMAGE         COMMAND                 CREATED        STATUS        PORTS      NAMES
      1f71********  mongo:latest  "docker-entrypoint.s…"  5 minutes ago  Up 5 minutes  27017/tcp  container-name
      
    3. Connect to the running Docker container:

      sudo docker exec -it 1f71******** bash
      
    4. View the list of attached disks. Pay attention to the mounted /dev/vdb 11G 24M 9.9G 1% /data disk:

      df -H
      

      Result:

      Filesystem  Size  Used  Avail  Use%  Mounted on
      overlay     32G   4.0G    27G   14%  /
      tmpfs       68M      0    68M    0%  /dev
      ...
      tmpfs       1.1G     0   1.1G    0%  /proc/acpi
      tmpfs       1.1G     0   1.1G    0%  /proc/scsi
      tmpfs       1.1G     0   1.1G    0%  /sys/firmware
      

For more information about working with VMs, see our step-by-step guides.

Was the article helpful?

Previous
Creating a VM from a Container Optimized Image
Next
Creating an instance group from a Container Optimized Image with multiple Docker containers
© 2025 Direct Cursus Technology L.L.C.