How to use the command limactl (with examples)
limactl is a command-line tool that can be used as a virtual machine manager for Linux guests, with multiple VM templates available. It can also be used to run containers on macOS, as well as for generic virtual machine use cases on macOS and Linux hosts. This article will provide examples of different use cases of the limactl command, including listing VMs, creating and starting a VM, opening a remote shell inside a VM, running a command inside a VM, stopping/shutting down a VM, and deleting a VM.
Use case 1: List VMs
Code:
limactl list
Motivation: To get a list of all the virtual machines currently managed by limactl.
Explanation:
The list
subcommand is used with the limactl command to display a list of all the virtual machines that have been created using limactl. This is helpful for keeping track of the available VMs.
Example output:
NAME STATE TEMPLATE HOST
vm1 Running ubuntu lima
vm2 Stopped debian lima
Use case 2: Create a VM
Code:
limactl create --name vm_name template://debian
Motivation: To create a new virtual machine with the specified template using limactl.
Explanation:
The create
subcommand is used with the limactl command to create a new virtual machine. The --name
option is used to provide a name for the new VM, and the template://debian
argument specifies the template to be used for the new VM (in this case, the “debian” template is used). The available templates can be listed using the limactl create --list-templates
command.
Example output:
Creating VM...
VM created successfully.
Use case 3: Start a VM
Code:
limactl start vm_name
Motivation: To start a previously created virtual machine using limactl.
Explanation:
The start
subcommand is used with the limactl command to start a virtual machine. The vm_name
argument specifies the name of the VM to be started. This command might install any necessary dependencies in the VM and could take a few minutes to complete.
Example output:
Starting VM...
VM started successfully.
Use case 4: Open a remote shell inside a VM
Code:
limactl shell vm_name
Motivation: To access the command line interface of a virtual machine using limactl.
Explanation:
The shell
subcommand is used with the limactl command to open a remote shell inside a virtual machine. The vm_name
argument specifies the name of the VM for which the remote shell is to be opened. This allows the user to access and interact with the command line interface of the VM.
Example output:
Opening remote shell...
Connected to VM shell.
Use case 5: Run a command inside a VM
Code:
limactl shell vm_name command
Motivation: To run a specific command inside a virtual machine using limactl.
Explanation:
The shell
subcommand is used with the limactl command to run a specific command inside a virtual machine. The vm_name
argument specifies the name of the VM in which the command is to be executed. The command
argument specifies the command to be run inside the VM. This is useful for executing specific tasks or commands within the VM environment.
Example output:
Running command inside VM...
Command executed successfully.
Use case 6: Stop/shutdown a VM
Code:
limactl stop vm_name
Motivation: To stop or shutdown a running virtual machine using limactl.
Explanation:
The stop
subcommand is used with the limactl command to stop or shutdown a running virtual machine. The vm_name
argument specifies the name of the VM to be stopped. This command will gracefully shut down the VM and stop all processes running inside it.
Example output:
Stopping VM...
VM stopped successfully.
Use case 7: Delete a VM
Code:
limactl remove vm_name
Motivation: To permanently delete a virtual machine using limactl.
Explanation:
The remove
subcommand is used with the limactl command to delete a virtual machine. The vm_name
argument specifies the name of the VM to be deleted. This command will permanently remove the VM and all associated files, including the disk image and any snapshots.
Example output:
Deleting VM...
VM deleted successfully.
Conclusion:
The limactl command provides a convenient way to manage virtual machines and containers on macOS and Linux hosts. The various use cases discussed in this article demonstrate the flexibility and functionality of limactl, from listing VMs to creating, starting, accessing, running commands, stopping/shutting down, and deleting VMs. Whether you are a developer, system administrator, or someone who needs to run virtualized environments, limactl can be a powerful tool in your toolkit.