120 lines
3.4 KiB
Markdown
120 lines
3.4 KiB
Markdown
docker-qemu
|
|
=============
|
|
|
|
[![build_img]][build_url]
|
|
[![gh_last_release_svg]][qemu-docker-hub]
|
|
[![Docker Image Size]][qemu-docker-hub]
|
|
[![Docker Pulls Count]][qemu-docker-hub]
|
|
|
|
[build_url]: https://github.com/kroese/docker-qemu/actions
|
|
[qemu-docker-hub]: https://hub.docker.com/r/kroese/docker-qemu
|
|
|
|
[build_img]: https://github.com/kroese/docker-qemu/actions/workflows/build.yml/badge.svg
|
|
[Docker Image Size]: https://img.shields.io/docker/image-size/kroese/docker-qemu/latest
|
|
[Docker Pulls Count]: https://img.shields.io/docker/pulls/kroese/docker-qemu.svg?style=flat
|
|
[gh_last_release_svg]: https://img.shields.io/docker/v/kroese/docker-qemu?arch=amd64&sort=date
|
|
|
|
A docker container of QEMU
|
|
|
|
## Features
|
|
|
|
- KVM acceleration
|
|
- Graceful shutdown
|
|
|
|
## Usage
|
|
|
|
Via `docker-compose.yml`
|
|
|
|
```yaml
|
|
version: "3"
|
|
services:
|
|
vm:
|
|
container_name: dsm
|
|
image: kroese/docker-qemu:latest
|
|
environment:
|
|
DISK_SIZE: "16G"
|
|
BOOT: "https://ftp.halifax.rwth-aachen.de/osdn/clonezilla/78259/clonezilla-live-3.0.3-22-amd64.iso"
|
|
devices:
|
|
- /dev/kvm
|
|
cap_add:
|
|
- NET_ADMIN
|
|
ports:
|
|
- 22:22
|
|
- 80:80
|
|
restart: on-failure
|
|
stop_grace_period: 60s
|
|
```
|
|
|
|
Via `docker run`
|
|
|
|
```bash
|
|
docker run -p 22:22 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 60 kroese/docker-qemu:latest
|
|
```
|
|
|
|
## FAQ
|
|
|
|
* ### How do I change the size of the virtual disk? ###
|
|
|
|
By default it is 16GB, but you can modify the `DISK_SIZE` setting in your compose file:
|
|
|
|
```
|
|
environment:
|
|
DISK_SIZE: "16G"
|
|
```
|
|
|
|
To create an empty disk with a maximum capacity of 8 terabyte you would use a value of `"8T"` for example.
|
|
|
|
* ### How do I change the location of the virtual disk? ###
|
|
|
|
By default it resides inside a docker volume, but you can add these lines to your compose file:
|
|
|
|
```
|
|
volumes:
|
|
- /home/user/data:/storage
|
|
```
|
|
|
|
Just replace `/home/user/data` with the path to the folder you want to use for storage.
|
|
|
|
* ### How do I give the container a dedicated IP address?
|
|
|
|
By default the container uses bridge networking, and is reachable by the IP of the docker host.
|
|
|
|
If you want to give it a seperate IP address, create a macvlan network that matches your local subnet:
|
|
|
|
```
|
|
$ docker network create -d macvlan \
|
|
--subnet=192.168.0.0/24 \
|
|
--gateway=192.168.0.1 \
|
|
--ip-range=192.168.0.100/28 \
|
|
-o parent=eth0 vlan
|
|
```
|
|
And change the network of the container to `vlan` in your run command:
|
|
|
|
```
|
|
--network vlan --ip=192.168.0.100
|
|
```
|
|
|
|
This has the advantage that you don't need to do any portmapping anymore.
|
|
|
|
* ### How do I change the amount of CPU/RAM? ###
|
|
|
|
By default an amount of 512MB RAM and 1 vCPU is allocated to the container.
|
|
|
|
To increase this you can add the following environment variabeles:
|
|
|
|
```
|
|
environment:
|
|
CPU_CORES: "4"
|
|
RAM_SIZE: "2048M"
|
|
```
|
|
|
|
* ### How do I install a specific version of vDSM? ###
|
|
|
|
By default it installs vDSM 7.2, but if you want to use an older version you can add its URL to your compose file:
|
|
|
|
```
|
|
environment:
|
|
URL: "https://global.synologydownload.com/download/DSM/release/7.0.1/42218/DSM_VirtualDSM_42218.pat"
|
|
```
|
|
|
|
You can also switch back and forth between versions this way without loosing your file data.
|