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:
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 downloadeddmg
file and drag the App e.g. to your Desktop. Start theCoreOS
app andInitial 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 inOS 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 thecorevm
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 differentcorectl
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 remoterkt
binary on CoreOS VM - A small shell script
etcdctl
will be installed to~/coreos-osx/bin/
which allows to call via ssh remoteetcdctl
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 torkt
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
andHalt
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 asUp
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 viaUpload 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
- To António Meireles for his awesome corectl tool to easily control xhyve
- To Michael Steil for the awesome xhyve lightweight macOS virtualization solution
- To Kelsey Hightower for Docker Registry macOS Setup Guide.
Other CoreOS VM based Apps for macOS
- Cluster one CoreOS VM App can be found here CoreOS Cluster for macOS.
- Kubernetes Solo Cluster VM App (corectl based) can be found here Kube Solo for macOS.
- Kubernetes Cluster one CoreOS VM App can be found here CoreOS Kubernetes Cluster 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!