KVM driver for docker-machine
This driver leverages the new plugin architecture being developed for Docker Machine.
- Install
libvirt
andqemu-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
- Add yourself to the
- Install docker-machine
- Go to the 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
.
This driver leverages libvirt and the libvirt-go library 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.
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.
By default docker-machine-kvm
uses a boot2docker.iso as guest os for the kvm hypervisior. It's also possible to use every guest os image that is derived from boot2docker.iso as well.
For using another image use the --kvm-boot2docker-url
parameter.
Community Members did some tests and it works with rancher/os as guest os too.
- 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:
docker-machine ssh mymachinename "ip -one -4 addr show dev eth0|cut -f7 -d' '"
- If you have exotic networking topolgies (openvswitch, etc.), you can use
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 . |