| FROM ubuntu:22.04 |
|
|
| ENV DEBIAN_FRONTEND=noninteractive |
|
|
| |
| RUN apt-get update && apt-get install -y \ |
| qemu-system-x86 \ |
| qemu-utils \ |
| novnc \ |
| websockify \ |
| wget \ |
| curl \ |
| sudo \ |
| && rm -rf /var/lib/apt/lists/* |
|
|
| RUN useradd -m -u 1000 vmuser && \ |
| echo "vmuser ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers |
|
|
| RUN ln -s /usr/share/novnc/vnc.html /usr/share/novnc/index.html |
|
|
| USER vmuser |
| WORKDIR /home/vmuser |
|
|
| |
| RUN wget -O /home/vmuser/os.iso http://www.tinycorelinux.net/14.x/x86_64/release/CorePure64-14.0.iso |
|
|
| |
| RUN qemu-img create -f qcow2 /home/vmuser/hdd.qcow2 10G |
|
|
| |
| RUN echo '#!/bin/bash\n\ |
| # Run QEMU Virtual Machine with 2 Cores and 2GB RAM\n\ |
| qemu-system-x86_64 \\\n\ |
| -m 2048M \\\n\ |
| -smp 2 \\\n\ |
| -hda /home/vmuser/hdd.qcow2 \\\n\ |
| -cdrom /home/vmuser/os.iso \\\n\ |
| -boot d \\\n\ |
| -vnc localhost:0 \\\n\ |
| -device e1000,netdev=net0 \\\n\ |
| -netdev user,id=net0 \\\n\ |
| -nodefaults &\n\ |
| \n\ |
| sleep 2\n\ |
| # Expose the QEMU VNC display over web port 7860\n\ |
| websockify --web=/usr/share/novnc/ 7860 localhost:5900\n\ |
| ' > /home/vmuser/start.sh |
|
|
| RUN chmod +x /home/vmuser/start.sh |
|
|
| EXPOSE 7860 |
| CMD ["/home/vmuser/start.sh"] |