An open API service indexing awesome lists of open source software.

https://github.com/machine-drivers/docker-machine-kvm

KVM driver for docker-machine
https://github.com/machine-drivers/docker-machine-kvm

Last synced: 11 months ago
JSON representation

KVM driver for docker-machine

Awesome Lists containing this project

README

          

# docker-machine-kvm
KVM driver for docker-machine

This driver leverages the new [plugin architecture](https://github.com/docker/machine/issues/1626) being
developed for Docker Machine.

# Quick start instructions

* Install `libvirt` and `qemu-kvm` on your system (e.g., `sudo apt-get install libvirt-bin qemu-kvm`)
* Add yourself to the `libvirtd` group (may vary by linux distro) so you don't need to sudo
* Install [docker-machine](https://github.com/docker/machine/releases)
* Go to the
[releases](https://github.com/dhiltgen/docker-machine-kvm/releases)
page and download the docker-machine-driver-kvm binary, putting it
in your PATH.
* You can now create virtual machines using this driver with
`docker-machine create -d kvm myengine0`.

# Dependencies

This driver leverages [libvirt](http://libvirt.org/) and the [libvirt-go
library](https://github.com/libvirt/libvirt-go) to create and manage
KVM based virtual machines. It has been tested with Ubuntu 12.04 through 15.04
and should work on most platforms with KVM/libvirt support. If you run into
compatibility problems, please file an [issue](https://github.com/dhiltgen/docker-machine-kvm/issues).

Typically you'll run `docker-machine` as yourself, so you'll want to
follow your distro specific instructions on allowing libvirt access
from your account. For most distro's, you accomplish this by adding
your account to the `libvirtd` group.

# Capabilities

## Images
By default `docker-machine-kvm` uses a [boot2docker.iso](https://github.com/boot2docker/boot2docker) as guest os for the kvm hypervisior. It's also possible to use every guest os image that is derived from [boot2docker.iso](https://github.com/boot2docker/boot2docker) as well.
For using another image use the `--kvm-boot2docker-url` parameter.

Community Members did some tests and it works with [rancher/os](https://github.com/rancher/os) as guest os too.

## Dual Network

* **eth1** - A host private network called **docker-machines** is automatically created to ensure we always have connectivity to the VMs. The `docker-machine ip` command will always return this IP address which is only accessible from your local system.
* **eth0** - You can specify any libvirt named network. If you don't specify one, the "default" named network will be used.
* If you have exotic networking topolgies (openvswitch, etc.), you can use `virsh edit mymachinename` after creation, modify the first network definition by hand, then reboot the VM for the changes to take effect.
* Typically this would be your "public" network accessible from external systems
* To retrieve the IP address of this network, you can run a command like the following:
```bash
docker-machine ssh mymachinename "ip -one -4 addr show dev eth0|cut -f7 -d' '"
```

## Driver Parameters

Here are all currently driver parameters listed that you can use.

| Parameter | Description|
| ------------- | ------------- |
| **--kvm-cpu-count** | Sets the used CPU Cores for the KVM Machine. Defaults to `1` . |
| **--kvm-disk-size** | Sets the kvm machine Disk size in MB. Defaults to `20000` . |
| **--kvm-memory** | Sets the Memory of the kvm machine in MB. Defaults to `1024`. |
| **--kvm-network** | Sets the Network of the kvm machinee which it should connect to. Defaults to `default`. |
| **--kvm-boot2docker-url** | Sets the url from which host the image is loaded. By default it's not set. |
| **--kvm-cache-mode** | Sets the caching mode of the kvm machine. Defaults to `default`. |
| **--kvm-io-mode-url** | Sets the disk io mode of the kvm machine. Defaults to `threads`. |