From 27d7496a70665ac0ead1aaf50a6417ab9dc5135c Mon Sep 17 00:00:00 2001 From: sickcodes Date: Wed, 27 Jan 2021 19:02:10 +0000 Subject: [PATCH] Use -e OSX_COMMANDS to run commands in OSX at runtime in :auto. Add docker start -i instructions. --- Dockerfile.auto | 34 ++++++++++++++++++---------------- Dockerfile.naked | 2 +- README.md | 25 +++++++++++++++++++------ vnc-version/Dockerfile | 8 +------- 4 files changed, 39 insertions(+), 30 deletions(-) diff --git a/Dockerfile.auto b/Dockerfile.auto index 417bfec..3a49fe5 100644 --- a/Dockerfile.auto +++ b/Dockerfile.auto @@ -115,32 +115,34 @@ CMD echo "${BOILERPLATE}" \ ; [[ "${DISPLAY}" = ':99' ]] && { nohup Xvfb :99 -screen 0 1920x1080x16 \ & until [[ "$(xrandr --query 2>/dev/null)" ]]; do sleep 0.1 ; done ; } \ ; case "$(file --brief /image)" in \ - QEMU*) export IMAGE_PATH=/image;; \ + QEMU*) export IMAGE_PATH=/image && sudo chown "$(id -u)":"$(id -g)" "${IMAGE_PATH}" 2>/dev/null || true;; \ directory*) export IMAGE_PATH=/home/arch/OSX-KVM/mac_hdd_ng.img;; \ esac \ ; stat "${IMAGE_PATH}" \ ; echo "Large image is being copied between layers, please wait a minute..." \ - ; sudo chown "$(id -u)":"$(id -g)" "${IMAGE_PATH}" 2>/dev/null || true \ ; ./enable-ssh.sh \ - ; /usr/bin/ssh-keygen -t rsa -f ~/.ssh/id_docker_osx -q -N "" \ - ; chmod 600 ~/.ssh/id_docker_osx \ + ; [[ -e ~/.ssh/id_docker_osx ]] || { \ + /usr/bin/ssh-keygen -t rsa -f ~/.ssh/id_docker_osx -q -N "" \ + && chmod 600 ~/.ssh/id_docker_osx \ + ; } \ ; envsubst < ./Launch.sh | bash \ & echo "Booting Docker-OSX in the background. Please wait..." \ ; until [[ "$(sshpass -palpine ssh-copy-id -f -i ~/.ssh/id_docker_osx.pub -p 10022 user@127.0.0.1)" ]]; do \ - scrotcat \ - ; echo "Waiting to copy SSH key into OSX..." \ + echo "Disk is being copied between layers. Repeating until able to copy SSH key into OSX..." \ ; sleep 1 \ ; done \ - ; tee -a ~/.ssh/config <<< 'Host 127.0.0.1' \ - ; tee -a ~/.ssh/config <<< ' User user' \ - ; tee -a ~/.ssh/config <<< ' Port 10022' \ - ; tee -a ~/.ssh/config <<< ' IdentityFile ~/.ssh/id_docker_osx' \ - ; tee -a ~/.ssh/config <<< ' StrictHostKeyChecking no' \ - ; tee -a ~/.ssh/config <<< ' UserKnownHostsFile=/dev/null' \ - ; echo 'Default username: user' \ - ; echo 'Default password: alpine' \ - ; echo 'Change it immediately using the command: passwd' \ - ; ssh -i ~/.ssh/id_docker_osx user@127.0.0.1 -p 10022 + ; grep id_docker_osx ~/.ssh/config || { \ + tee -a ~/.ssh/config <<< 'Host 127.0.0.1' \ + ; tee -a ~/.ssh/config <<< ' User user' \ + ; tee -a ~/.ssh/config <<< ' Port 10022' \ + ; tee -a ~/.ssh/config <<< ' IdentityFile ~/.ssh/id_docker_osx' \ + ; tee -a ~/.ssh/config <<< ' StrictHostKeyChecking no' \ + ; tee -a ~/.ssh/config <<< ' UserKnownHostsFile=/dev/null' \ + ; } \ + && echo 'Default username: user' \ + && echo 'Default password: alpine' \ + && echo 'Change it immediately using the command: passwd' \ + && ssh -i ~/.ssh/id_docker_osx user@127.0.0.1 -p 10022 "${OSX_COMMANDS}" # username: user # password: alpine diff --git a/Dockerfile.naked b/Dockerfile.naked index 838e64c..9966c33 100644 --- a/Dockerfile.naked +++ b/Dockerfile.naked @@ -88,7 +88,7 @@ ENV DISPLAY=:99 ENV IMAGE_PATH=/image CMD [[ "${DISPLAY}" = ':99' ]] && { nohup Xvfb :99 -screen 0 1920x1080x16 \ - & until [[ "$(xrandr --query 2>/dev/null)" ]]; do sleep 0.1 ; done ; } \ + & until [[ "$(xrandr --query 2>/dev/null)" ]]; do sleep 1 ; done ; } \ ; sudo chown "$(id -u)":"$(id -g)" "${IMAGE_PATH}" 2>/dev/null || true \ ; ./enable-ssh.sh \ ; envsubst < ./Launch.sh | bash diff --git a/README.md b/README.md index c3c5111..d9e2591 100644 --- a/README.md +++ b/README.md @@ -21,10 +21,10 @@ Docker Hub: https://hub.docker.com/r/sickcodes/docker-osx # Quick Start Docker-OSX -`sickcodes/docker-osx:latest` - ```bash +docker pull sickcodes/docker-osx:latest + docker run -it \ --device /dev/kvm \ -p 50922:10022 \ @@ -38,13 +38,15 @@ docker run -it \ # Quick Start 22GB Pre-Made Image -`sickcodes/docker-osx:auto` You will need around 50GB of space: half for the base image + half for your runtime image. If you run out of space, you can nuke your Docker images/history/cache by simply deleting `/var/lib/docker` ```bash + +docker pull sickcodes/docker-osx:auto + # boot straight to OSX shell with no display (19GB) docker run -it \ --device /dev/kvm \ @@ -55,25 +57,37 @@ docker run -it \ ``` ```bash -# boot to OSX shell + display (19GB) +# boot to OSX shell + display (19GB) + commands to run inside OSX docker run -it \ --device /dev/kvm \ -p 50922:10022 \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -e "DISPLAY=${DISPLAY:-:0.0}" \ + -e "OSX_COMMANDS=/bin/bash -c \"pwd && uname -a\"" sickcodes/docker-osx:auto # Boots in a minute or two! +``` +### Restart an auto container + +```bash +# find last container +docker ps -a + +# docker start old container with -i for interactive +docker start -i containerid + ``` # Quick Start Own Image -`sickcodes/docker-osx:naked` Supply your image with `-v "${PWD}/mac_hdd_ng.img:/image"` and use `sickcodes/docker-osx:naked` ```bash +docker pull sickcodes/docker-osx:naked + # run your own image + SSH docker run -it \ --device /dev/kvm \ @@ -97,7 +111,6 @@ docker run -it \ - sickcodes/docker-osx:latest - original base recovery image (safe) - sickcodes/docker-osx:naked - supply your own .img file (safe) - sickcodes/docker-osx:auto - 22gb image boot to OSX shell (must trust @sickcodes) -- Full auto mode: boot straight to OSX shell. - Supply your own image using -v $PWD/disk.img:/image - Kubernetes Helm Chart. [See ./helm](https://github.com/sickcodes/Docker-OSX/tree/master/helm) - OSX-KVM diff --git a/vnc-version/Dockerfile b/vnc-version/Dockerfile index 747fb55..bea056d 100644 --- a/vnc-version/Dockerfile +++ b/vnc-version/Dockerfile @@ -121,10 +121,4 @@ RUN printf '\n\n\n\n%s\n%s\n\n\n\n' '===========VNC_PASSWORD========== ' "$(