feat: Automaticly set controlport
feat: Automaticly set controlport
This commit is contained in:
commit
5028c9c6bf
6 changed files with 24 additions and 25 deletions
|
@ -18,12 +18,7 @@ RUN apt-get update && apt-get -y upgrade && \
|
|||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
|
||||
# Using a wildcard causes caching problems on some systems
|
||||
COPY src/disk.sh /run/
|
||||
COPY src/display.sh /run/
|
||||
COPY src/entry.sh /run/
|
||||
COPY src/install.sh /run/
|
||||
COPY src/network.sh /run/
|
||||
COPY ./src /run/
|
||||
RUN chmod +x /run/*.sh
|
||||
|
||||
VOLUME /storage
|
||||
|
|
|
@ -4,12 +4,11 @@ services:
|
|||
container_name: qemu
|
||||
image: qemux/qemu-docker:latest
|
||||
environment:
|
||||
DISPLAY: "vnc"
|
||||
CPU_CORES: "1"
|
||||
RAM_SIZE: "512M"
|
||||
DISK_SIZE: "16G"
|
||||
BOOT: "https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/x86_64/alpine-standard-3.18.2-x86_64.iso"
|
||||
DISPLAY: "vnc"
|
||||
CONTROL_PORTS: "5900"
|
||||
devices:
|
||||
- /dev/kvm
|
||||
- /dev/vhost-net
|
||||
|
@ -18,7 +17,7 @@ services:
|
|||
cap_add:
|
||||
- NET_ADMIN
|
||||
ports:
|
||||
- 22:22
|
||||
- 2222:22
|
||||
- 5900:5900
|
||||
restart: on-failure
|
||||
stop_grace_period: 1m
|
||||
|
|
28
readme.md
28
readme.md
|
@ -28,6 +28,7 @@ services:
|
|||
container_name: qemu
|
||||
image: qemux/qemu-docker:latest
|
||||
environment:
|
||||
DISPLAY: "vnc"
|
||||
DISK_SIZE: "16G"
|
||||
BOOT: "https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/x86_64/alpine-standard-3.18.2-x86_64.iso"
|
||||
devices:
|
||||
|
@ -35,7 +36,8 @@ services:
|
|||
cap_add:
|
||||
- NET_ADMIN
|
||||
ports:
|
||||
- 22:22
|
||||
- 2222:22
|
||||
- 5900:5900
|
||||
restart: on-failure
|
||||
```
|
||||
|
||||
|
@ -125,7 +127,18 @@ docker run -it --rm -e "BOOT=http://www.example.com/image.iso" --device=/dev/kvm
|
|||
|
||||
If you receive an error from `kvm-ok` indicating that KVM acceleration can't be used, check your BIOS settings.
|
||||
|
||||
* ### How do I provide extra arguments to QEMU?
|
||||
* ### How can I connect with VNC?
|
||||
|
||||
To enable VNC, add the following lines to your compose file:
|
||||
|
||||
```yaml
|
||||
environment:
|
||||
DISPLAY: "vnc"
|
||||
ports:
|
||||
- 5900:5900
|
||||
```
|
||||
|
||||
* ### How do I provide custom arguments to QEMU?
|
||||
|
||||
You can create the `ARGUMENTS` environment variable to provide additional arguments to QEMU at runtime:
|
||||
|
||||
|
@ -187,17 +200,6 @@ docker run -it --rm -e "BOOT=http://www.example.com/image.iso" --device=/dev/kvm
|
|||
|
||||
Please note that even if you don't need DHCP, it's still recommended to enable this feature as it prevents NAT issues and increases performance by using a `macvtap` interface.
|
||||
|
||||
* ### How can I connect with VNC?
|
||||
|
||||
To enable VNC, add the following lines to your compose file:
|
||||
|
||||
```yaml
|
||||
ports:
|
||||
"5900:5900"
|
||||
environment:
|
||||
DISPLAY: "vnc"
|
||||
```
|
||||
|
||||
[build_url]: https://github.com/qemu-tools/qemu-docker/
|
||||
[hub_url]: https://hub.docker.com/r/qemux/qemu-docker/
|
||||
[tag_url]: https://hub.docker.com/r/qemux/qemu-docker/tags
|
||||
|
|
|
@ -5,7 +5,7 @@ set -Eeuo pipefail
|
|||
|
||||
: ${DISPLAY:='none'} # Display type
|
||||
|
||||
case "$DISPLAY" in
|
||||
case "${DISPLAY,,}" in
|
||||
vnc)
|
||||
DISPLAY_OPTS="-nographic -vga std -vnc :0"
|
||||
;;
|
||||
|
|
|
@ -33,8 +33,8 @@ cd /run
|
|||
|
||||
. install.sh # Get bootdisk
|
||||
. disk.sh # Initialize disks
|
||||
. network.sh # Initialize network
|
||||
. display.sh # Initialize display
|
||||
. network.sh # Initialize network
|
||||
|
||||
KVM_ERR=""
|
||||
KVM_OPTS=""
|
||||
|
@ -69,7 +69,6 @@ ARGS=$(echo "$ARGS" | sed 's/\t/ /g' | tr -s ' ')
|
|||
trap - ERR
|
||||
info "Booting image using ${VERS}..."
|
||||
|
||||
|
||||
[[ "${DEBUG}" == [Yy1]* ]] && set -x
|
||||
exec qemu-system-x86_64 ${ARGS:+ $ARGS}
|
||||
{ set +x; } 2>/dev/null
|
||||
|
|
|
@ -148,6 +148,10 @@ configureNAT () {
|
|||
|
||||
ip link set dev "${VM_NET_TAP}" master dockerbridge
|
||||
|
||||
if [[ -z "${CONTROL_PORTS}" ]] && [[ "${DISPLAY,,}" == "vnc" ]]; then
|
||||
CONTROL_PORTS='5900'
|
||||
fi
|
||||
|
||||
CONTROL_PORT_ARGS=''
|
||||
for PORT in $CONTROL_PORTS ; do
|
||||
CONTROL_PORT_ARGS="$CONTROL_PORT_ARGS ! --dport $PORT"
|
||||
|
|
Loading…
Reference in a new issue