README update for current feature set

This commit is contained in:
sickcodes 2020-09-20 08:49:12 +00:00
parent 35ca1ebaf8
commit ce3b320d03

135
README.md
View File

@ -1,18 +1,34 @@
# Docker-OSX # 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") ![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! 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 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 Docker Hub: https://hub.docker.com/r/sickcodes/docker-osx
Pull requests, suggestions very welcome! Pull requests, suggestions very welcome!
``` ```bash
docker pull sickcodes/docker-osx 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. Need to turn on hardware virtualization in your BIOS, very easy to do.
Then have QEMU on the host if you haven't already: Then have QEMU on the host if you haven't already:
``` ```bash
# ARCH # 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 # UBUNTU DEBIAN
sudo apt install qemu qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager 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. 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 # look at your recent containers and copy the CONTAINER ID
docker ps --all docker ps --all
@ -74,34 +90,32 @@ docker start abc123xyz567
# Additional Boot Instructions # 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: ## Creating images:
``` ```bash
# You can create an image of a already configured and setup container. This allows you to effectively duplicate a system. # 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 # To do this, run the following commands
$ docker ps --all #make note of your container id docker ps --all #make note of your container id
$ docker commit containerID newImageName docker commit containerID newImageName
# To run this image do the following # 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 # Troubleshooting
libgtk permissions denied error, thanks @raoulh + @arsham libgtk permissions denied error, thanks @raoulh + @arsham
``` ```bash
echo $DISPLAY echo $DISPLAY
# ARCH # ARCH
@ -121,98 +135,109 @@ docker run --privileged -e "DISPLAY=${DISPLAY:-:0.0}" -v /tmp/.X11-unix:/tmp/.X1
Alternative run, thanks @roryrjb 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 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 Try adding yourself to the docker group
```sudo usermod -aG docker $USER``` ```bash
sudo usermod -aG docker "${USER}"
```
Turn on docker daemon Turn on docker daemon
```sudo nohup dockerd &``` ```bash
sudo dockerd
# or daemonize it
sudo nohup dockerd &
```
Check /dev/kvm permissions Check /dev/kvm permissions
```sudo chmod 666 /dev/kvm``` ```bash
sudo chmod 666 /dev/kvm
```
If you don't have Docker already If you don't have Docker already
``` ```bash
### Arch (pacman version isn't right at time of writing) ### 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 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 cp docker/* /usr/bin/
sudo dockerd &
sudo groupadd docker sudo groupadd docker
sudo usermod -aG docker $USER sudo usermod -aG docker "${USER}"
# run docker later
sudo nohup dockerd &
### Ubuntu ### Ubuntu
apt-get remove docker docker-engine docker.io containerd runc -y 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 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 apt-key fingerprint 0EBFCD88
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get update -y apt-get update -y
apt-get install docker-ce docker-ce-cli containerd.io -y apt-get install docker-ce docker-ce-cli containerd.io -y
sudo dockerd &
sudo groupadd docker sudo groupadd docker
sudo usermod -aG docker $USER sudo usermod -aG docker "${USER}"
sudo nohup dockerd &
``` ```
If you have no internet connectivity from the VM, you are using bridge If you have no internet connectivity from the VM, you are using bridge
networking, and you are running Fedora: networking, and you are running Fedora:
``` ```bash
# Set the docker0 bridge to the trusted zone # Set the docker0 bridge to the trusted zone
sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0 sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0
sudo firewall-cmd --reload 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 # fast way
sudo find /var/lib/docker -size +10G | grep mac_hdd_ng.img sudo find /var/lib/docker -size +10G | grep mac_hdd_ng.img
# note the container id # you can move (mv) it somewhere
sudo mv somedir/mac_hdd_ng.img .
# start a new container
# get the new container id
docker ps docker ps
# find your container's root folder # docker cp INTO new container
docker inspect $(docker ps -q --all --filter "ancestor=docker-osx") | grep UpperDir docker cp ./mac_hdd_ng.img newcontainerid:/home/arch/OSX-KVM/mac_hdd_ng.img
# In the folder from the above command, your image is inside ./home/arch/OSX-KVM/mac_hdd_ng.img
# then sudo cut it somewhere. Don't do it while the container is running as you might lose data.
``` ```
# Wipe old images # DESTROY: Wipe old images
```
```bash
# WARNING deletes all old images, but saves disk space if you make too many containers # 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 system prune --all
docker image 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. This Dockerfile automates the installation of OSX-KVM inside a docker container.
It will build a Catalina Disk with up to 200GB of space. 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 # Custom Build
``` ```bash
docker build -t docker-osx:latest \ docker build -t docker-osx:latest \
--build-arg VERSION=10.14.6 \ --build-arg VERSION=10.14.6 \
--build-arg SIZE=200G --build-arg SIZE=200G
```
```bash
docker run \ docker run \
-e RAM=4 \ -e RAM=4 \
-e SMP=4 \ -e SMP=4 \
@ -237,10 +263,11 @@ docker run \
-e INTERNAL_SSH_PORT=23 \ -e INTERNAL_SSH_PORT=23 \
--privileged -v /tmp/.X11-unix:/tmp/.X11-unix docker-osx:latest --privileged -v /tmp/.X11-unix:/tmp/.X11-unix docker-osx:latest
``` ```
## Todo: ## Todo:
``` ```
# persistent disk with least amount of pre-build errands. - GPU Acceleration (Hackintosh? Passthru bus id of cards? AMD Vega? Nvidia-SMI?)
- Virt-manager
``` ```