Local development docker/rkt CoreOS VM App for macOS made very simple
Latest commit 9e2184e Mar 22, 2017
Permalink
Failed to load latest commit information.
src v1.5.4 Nov 14, 2016
.gitignore v1.4.1 Jul 6, 2016
.travis.yml updated .travis.yml Jun 28, 2016
CONTRIBUTING.md v1.4.1 Jul 6, 2016
DCO v1.4.1 Jul 6, 2016
LICENSE v1.4.1 Jul 6, 2016
MAINTAINERS v1.4.1 Jul 6, 2016
README.md Update README.md Mar 22, 2017
coreos-osx.png v1.4.2 Jul 12, 2016

README.md

CoreOS VM for macOS

CoreOS VM is macOS status bar app which allows in an easy way to control CoreOS VM on your Mac.

It leverages macOS native Hypervisor virtualisation framework of using corectl command line tool, so there are no needs to use VirtualBox or any other virtualisation software anymore.

The best use case of this App is to allow to build/test Docker and rkt images locally. You can push your Docker images to Docker Registry on 192.168.64.1:5000 run by Corectl App, to store your Docker images and share with Kubernetes Apps for macOS: Kube-solo and Kube-Cluster

App's menu looks as per image below:

CoreOS-OSX

How to install CoreOS VM for macOS

Requirements

  • macOS 10.10.3 Yosemite or later
  • Mac 2010 or later for this to work
  • Corectl App must be installed, which will serve as corectld server daemon control.
  • iTerm2 is required, if not found the app it will install it by itself.

Install:

  • Download Corectl App latest dmg from the Releases Page and install it to /Applications folder, it allows to start/stop/update corectl tools needed to run CoreOS VMs on macOS
  • Download CoreOS latest.dmg from the Releases Page. Open downloaded dmg file and drag the App e.g. to your Desktop. Start the CoreOS app and Initial setup will beggin.

TL;DR

  • App's files are installed to ~/coreos-osx folder
  • CoreOS ISO files are stored under ~/.coreos/images folder
  • Mac user home folder is automaticly mounted via NFS (it has to work on Mac end of course) to /Users/my_user:/Users/my_user on each VM boot
  • macOS docker client is installed to ~/coreos-osx/bin and preset in OS shell to be used from there
  • After successful install you can control CoreOS VM via corevm cli as well. Cli resides in ~/coreos-osx/bin folder and has simple commands: corevm start|stop|status|ip|shell|ssh, it is specially handy for automation tasks. Just copy the corevm to your pre-set path.

The install will do the following:

  • All dependent files/folders will be put under coreos-osx folder in the user's home folder e.g /Users/someuser/coreos-osx
  • ISO images are stored under ~/.coreos/images That allows to share the same images between different corectl based Apps and also speeds up this App VMs reinstall
  • user-data file will have Docker Socket for the API enabled
  • Will download latest CoreOS ISO image and run corectl to initialise VM with docker 2375 port pre-set for docker macOS client
  • Will download and install docker macOS client to ~/coreos-osx/bin/
  • A small shell script rkt will be installed to ~/coreos-osx/bin/ which allows to call via ssh remote rkt binary on CoreOS VM
  • A small shell script etcdctl will be installed to ~/coreos-osx/bin/ which allows to call via ssh remote etcdctl binary on CoreOS VM
  • docker-exec script (docker exec -it $1 bash -c 'export TERM=xterm && bash') will be installed into ~/coreos-osx/bin/ too, which allows to enter container with just a simple command: docker-exec container_name
  • Also docker2aci binary will be installed to ~/coreos-osx/bin/, which allows to convert docker images to rkt aci images
  • Will install UI for Docker via unit files
  • Via assigned static IP (it will be shown in first boot and will survive VM's reboots) you can access any port on CoreOS VM
  • user-data file enables docker flag --insecure-registry to access insecure registries.
  • Persistent sparse disk (QCow2) data.img will be created and mounted to /data for these mount binds:
/data/var/lib/docker -> /var/lib/docker
/data/var/lib/rkt -> /var/lib/rkt
/data/var/lib/etcd2 -> /var/lib/etcd2
/data/opt/bin -> /opt/bin

How it works

Just start CoreOS OSX application and you will find a small icon with the CoreOS logo in the Status Bar.

  • There you can Up and Halt CoreOS VM
  • SSH to core-01 will open VM shell
  • Under Up OS Shell will be opened when VM boot finishes up and it will have such environment pre-set:
DOCKER_HOST=tcp://192.168.64.xxx:2375
ETCDCTL_PEERS=http://192.168.64.xxx:2379
Path to `~/coreos-osx/bin` where docker binary, rkt, etcdclt 
and docker-exec shell scripts are stored
  • OS Shell opens OS Shell with the same enviroment preset as Up
  • Updates/Check for update of docker macOS client will update fleet and docker macOS clients to the same versions as CoreOS VM runs.
  • UI for Docker will show up all running containers and etc
  • You can upload your saved/exported docker images place in ~/coreos-osx/docker_images folder via Upload docker images
  • Persistent sparse disk data.img will be created and mounted to /data to these mount binds (data persists between reboots):
/data/var/lib/docker -> /var/lib/docker
/data/var/lib/rkt -> /var/lib/rkt
/data/var/lib/etcd2 -> /var/lib/etcd2
/data/opt/bin -> /opt/bin

have fun!

Credits

Other CoreOS VM based Apps for macOS

Contributing

CoreOS VM is an open source project release under the Apache License, Version 2.0, hence contributions and suggestions are gladly welcomed!