Commit 129d4709 authored by Josh Kunz's avatar Josh Kunz
Browse files

Merge branch 'add-docs'

parents b54671a9 8a180cb7
Loading
Loading
Loading
Loading

readme.md

0 → 100644
+51 −0
Original line number Diff line number Diff line
# qemu-docker

This repository contains a Docker container for running x86\_64 virtual
machines using QEMU. It uses high-performance QEMU options
(KVM, and TAP network driver).

Docker Hub: [jkz0/qemu](https://hub.docker.com/r/jkz0/qemu)

## Using the container

Via `docker run`:

```bash
$ docker run --rm -it \
    --device=/dev/kvm:/dev/kvm --device=/dev/net/tun:/dev/net/tun \
    --cap-add NET_ADMIN -v $VM_IMAGE_FILE:/image \
    jkz0/qemu:latest
```

Via `docker-compose.yml`:

```yaml
version: "3"
services:
    vm:
        image: jkz0/qemu:latest
        cap_add:
            - NET_ADMIN
        devices:
            - /dev/net/tun
            - /dev/kvm
        volumes:
            - ${VM_IMAGE:?VM image must be supplied}:/image
        restart: always
```

## Tips 

* VM networking is configured via DHCP, make sure to enable DHCP in your
  VM image. VMs will use the IP address of the container.
* You can quit the VM (when attached to the container) by entering the special
  key sequence `C-a x`. Killing the docker container will also shut down the
  VM.

## Caveat Emptor

* Only x86\_64 supported new. PRs to support other architectures welcome,
  though I imagine 99% of use-cases will be x86\_64.
* VMs will not be able to resolve container-names on user-defined bridges.
  This is due to the way Docker's "Embedded DNS" server works. VMs can still
  connect to other containers on the same bridge using IP addresses.