diff --git a/README.md b/README.md index 54079dd..f3bfe76 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,34 @@ # Docker-OSX -#### [Follow @sickcodes on Twitter](https://twitter.com/sickcodes) for v2.0 notification (SSH TUNNELING, XFVB HEADLESS, NFS, FULL AUTO CI/CD) +## [Follow @sickcodes on Twitter](https://twitter.com/sickcodes) + +### V2.5 +# Features In Docker-OSX v2.5 +- CI/CD weaponization thru vnc and xdotool +- OSX-KVM +- X11 Forwarding +- SSH on localhost:50922 +- QEMU +- VNC on localhost:8888 [vnc version is inside a separate directory](https://github.com/sickcodes/Docker-OSX/blob/master/vnc-version/Dockerfile) +- Create an ARMY using `docker commit` +- XFVB HEADLESS (use vnc) + ![Running mac osx in a docker container](/running-mac-inside-docker-qemu.png?raw=true "OSX KVM DOCKER") Run Mac in a Docker container! Run near native OSX-KVM in Docker! X11 Forwarding! Author: Sick.Codes https://sick.codes/ & https://twitter.com/sickcodes -Credits: OSX-KVM project among many others: https://github.com/kholia/OSX-KVM/blob/master/CREDITS.md +Based: https://github.com/kholia/OSX-KVM && the great guy [@kholia](https://twitter.com/kholia) + +Credits: https://github.com/sickcodes/Docker-OSX/blob/master/CREDITS.md + +Upstream Credits: OSX-KVM project among many others: https://github.com/kholia/OSX-KVM/blob/master/CREDITS.md Docker Hub: https://hub.docker.com/r/sickcodes/docker-osx Pull requests, suggestions very welcome! -``` +```bash docker pull sickcodes/docker-osx @@ -35,9 +51,9 @@ ssh fullname@localhost -p 50922 Need to turn on hardware virtualization in your BIOS, very easy to do. Then have QEMU on the host if you haven't already: -``` +```bash # ARCH -sudo pacman -S qemu libvirt dnsmasq virt-manager bridge-utils flex bison ebtables edk2-ovmf +sudo pacman -S qemu libvirt dnsmasq virt-manager bridge-utils flex bison iptables-nft edk2-ovmf # UBUNTU DEBIAN sudo apt install qemu qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager @@ -60,7 +76,7 @@ This is for when you want to run your system later. If you don't run this you will have a new image every time. -``` +```bash # look at your recent containers and copy the CONTAINER ID docker ps --all @@ -74,34 +90,32 @@ docker start abc123xyz567 # Additional Boot Instructions -``` +- Boot the macOS Base System -# Boot the macOS Base System +- Click Disk Utility -# Click Disk Utility +- Erase the BIGGEST disk (around 200gb default), DO NOT MODIFY THE SMALLER DISKS. -# Erase the biggest disk (around 200gb default), DO NOT MODIFY THE SMALLER DISKS. +- Click Reinstall macOS -# Click Reinstall macOS -``` ## Creating images: -``` +```bash # You can create an image of a already configured and setup container. This allows you to effectively duplicate a system. # To do this, run the following commands -$ docker ps --all #make note of your container id -$ docker commit containerID newImageName +docker ps --all #make note of your container id +docker commit containerID newImageName # To run this image do the following -$ docker run --privileged -e "DISPLAY=${DISPLAY:-:0.0}" -v /tmp/.X11-unix:/tmp/.X11-unix newImageName +docker run --privileged -e "DISPLAY=${DISPLAY:-:0.0}" -v /tmp/.X11-unix:/tmp/.X11-unix newImageName ``` # Troubleshooting libgtk permissions denied error, thanks @raoulh + @arsham -``` +```bash echo $DISPLAY # ARCH @@ -121,98 +135,109 @@ docker run --privileged -e "DISPLAY=${DISPLAY:-:0.0}" -v /tmp/.X11-unix:/tmp/.X1 Alternative run, thanks @roryrjb -```docker run --privileged --net host --cap-add=ALL -v /tmp/.X11-unix:/tmp/.X11-unix -v /dev:/dev -v /lib/modules:/lib/modules sickcodes/docker-osx``` +```bash +docker run --privileged --net host --cap-add=ALL -v /tmp/.X11-unix:/tmp/.X11-unix -v /dev:/dev -v /lib/modules:/lib/modules sickcodes/docker-osx +``` Check if your hardware virt is on -```egrep -c '(svm|vmx)' /proc/cpuinfo``` +```bash +egrep -c '(svm|vmx)' /proc/cpuinfo +``` Try adding yourself to the docker group -```sudo usermod -aG docker $USER``` +```bash +sudo usermod -aG docker "${USER}" +``` Turn on docker daemon -```sudo nohup dockerd &``` +```bash +sudo dockerd +# or daemonize it +sudo nohup dockerd & +``` Check /dev/kvm permissions -```sudo chmod 666 /dev/kvm``` - +```bash +sudo chmod 666 /dev/kvm +``` If you don't have Docker already -``` +```bash ### Arch (pacman version isn't right at time of writing) wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.5.tgz -tar -xzvf docker-*.tgz +tar -xzvf docker-19.03.5.tgz sudo cp docker/* /usr/bin/ -sudo dockerd & sudo groupadd docker -sudo usermod -aG docker $USER -# run docker later -sudo nohup dockerd & +sudo usermod -aG docker "${USER}" ### Ubuntu apt-get remove docker docker-engine docker.io containerd runc -y apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - apt-key fingerprint 0EBFCD88 add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" apt-get update -y apt-get install docker-ce docker-ce-cli containerd.io -y -sudo dockerd & sudo groupadd docker -sudo usermod -aG docker $USER -sudo nohup dockerd & +sudo usermod -aG docker "${USER}" + ``` If you have no internet connectivity from the VM, you are using bridge networking, and you are running Fedora: -``` +```bash # Set the docker0 bridge to the trusted zone sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0 sudo firewall-cmd --reload ``` -# Backup the disk +# Backup the disk (Where's my disk?) -your image will be stored in: +You can use `docker cp` -/var/lib/docker/overlay2/...../arch/OSX-KVM/home/arch/OSX-KVM/mac_hdd_ng.img +```bash +# docker copy your image OUT of your container (warning, double disk space) +docker cp oldcontainerid:/home/arch/OSX-KVM/mac_hdd_ng.img . ``` + +Or if you lost your container, find it with this: + +```bash # fast way sudo find /var/lib/docker -size +10G | grep mac_hdd_ng.img -# note the container id -docker ps - -# find your container's root folder -docker inspect $(docker ps -q --all --filter "ancestor=docker-osx") | grep UpperDir +# you can move (mv) it somewhere +sudo mv somedir/mac_hdd_ng.img . -# In the folder from the above command, your image is inside ./home/arch/OSX-KVM/mac_hdd_ng.img +# start a new container +# get the new container id +docker ps -# then sudo cut it somewhere. Don't do it while the container is running as you might lose data. +# docker cp INTO new container +docker cp ./mac_hdd_ng.img newcontainerid:/home/arch/OSX-KVM/mac_hdd_ng.img ``` -# Wipe old images - -``` +# DESTROY: Wipe old images +```bash # WARNING deletes all old images, but saves disk space if you make too many containers - +# The following command will make your containers RIP docker system prune --all docker image prune --all - ``` -# Instant OSX-KVM in a BOX! +# INSTANT OSX-KVM in a BOX! This Dockerfile automates the installation of OSX-KVM inside a docker container. It will build a Catalina Disk with up to 200GB of space. @@ -223,12 +248,13 @@ This file builds on top of the work done by Dhiru Kholia and many others on the # Custom Build -``` - +```bash docker build -t docker-osx:latest \ --build-arg VERSION=10.14.6 \ --build-arg SIZE=200G +``` +```bash docker run \ -e RAM=4 \ -e SMP=4 \ @@ -237,10 +263,11 @@ docker run \ -e INTERNAL_SSH_PORT=23 \ --privileged -v /tmp/.X11-unix:/tmp/.X11-unix docker-osx:latest - ``` ## Todo: ``` -# persistent disk with least amount of pre-build errands. +- GPU Acceleration (Hackintosh? Passthru bus id of cards? AMD Vega? Nvidia-SMI?) +- Virt-manager + ```