github.com/emc-advanced-dev/unik@v0.0.0-20190717152701-a58d3e8e33b7/README.md (about) 1 <h1 align="center"> 2 <img src="https://i.imgur.com/v5eH7HV.png" alt="Build and run unikernels" width="150" height="184"> 3 </h1> 4 5 <h4 align="center">A platform for automating unikernel & MicroVM compilation and deployment</h4> 6 <BR> 7 8 9 10 UniK (pronounced you-neek) is a tool for compiling application sources into unikernels (lightweight bootable disk images) and MicroVM rather than binaries. 11 12 UniK runs and manages instances of compiled images across a variety of cloud providers as well as locally. 13 14 UniK utilizes a simple docker-like command line interface, making building unikernels and MicroVM as easy as building containers. 15 16 UniK is built to be easily extensible, allowing (and encouraging) adding support for unikernel/MicroVM [compilers](docs/compilers/README.md) and cloud [providers](docs/providers/README.md). See [architecture](docs/architecture.md) for a better understanding of UniK's pluggable code design. 17 18 To learn more about the motivation behind project UniK, read our [blog](https://medium.com/solo-io/unik-build-and-run-unikernels-with-ease-2c7344115cbb) post, or [watch](https://www.youtube.com/watch?v=wcZWg3YtvnY) session ([Slides](http://www.slideshare.net/IditLevine/unik-slides)). 19 We also encourage you to read [this](https://medium.com/solo-io/worried-about-iot-ddos-think-unikernels-fae2a9c5c51b) blog about IoT Security.<BR><BR> 20 To stay up-to-date on UniK, follow us at [twitter](https://twitter.com/soloio_inc) and join us on our [slack channel](http://slack.solo.io). 21 22 --- 23 24 ### *Changelog*: 25 26 Due to the frequency with which features and patches are applied to UniK, we have decided to list these changes by date in our [unversioned changelog](docs/changelog.md). 27 28 --- 29 30 ### Documentation 31 - **Installation** 32 - [Install UniK](docs/install.md) 33 - [Configuring the daemon](docs/configure.md) 34 - [Launching the InstanceListener](docs/instance_listener.md) 35 - **Getting Started** 36 - [Pull and run a unikernel without building](docs/getting_started_pull.md) on Virtualbox with UniK 37 - [Run your first Go MicroVM](docs/compilers/firecracker.md) on Firecracker with Unik 38 - [Run your first Go unikernel](docs/getting_started.md) on Virtualbox with UniK 39 - [Run your first Node.js unikernel](docs/getting_started_node.md) on Virtualbox with UniK 40 - [Run your first Python3 unikernel](docs/getting_started_python3.md) on Virtualbox with UniK 41 - [Run your first Java unikernel](docs/getting_started_java.md) on Virtualbox with UniK 42 - [Run your first C++ unikernel](docs/getting_started_cpp.md) on Virtualbox with UniK 43 - **User Documenation** 44 - Using the [command line interface](docs/cli.md) 45 - Compiling [Node.js](docs/compilers/rump.md#nodejs) Applications to Unikernels 46 - Compiling [Go](docs/compilers/rump.md#golang) Applications to Unikernels 47 - Compiling [Java](docs/compilers/osv.md#java) Applications to Unikernels (OSv) 48 - Compiling [Node.js](docs/compilers/osv.md#nodejs) Applications to Unikernels (OSv) 49 - Compiling [C/C++](docs/compilers/osv.md#native) Applications to Unikernels (OSv) 50 - Compiling [C/C++](docs/compilers/includeos.md) Applications to Unikernels 51 - Compiling [Python3](docs/compilers/rump.md#python-3) Applications to Unikernels 52 - **Developer Documentation** 53 - Adding [compiler](docs/compilers/README.md) support 54 - Adding [provider](docs/providers/README.md) support 55 56 --- 57 58 ### Supported unikernel types: 59 * **Firecracker**: UniK supports compiling GO code into [Firecracker](https://firecracker-microvm.github.io/) MicroVMs 60 * **rump**: UniK supports compiling [Python](docs/compilers/rump.md#python-3), [Node.js](docs/compilers/rump.md#nodejs) and [Go](docs/compilers/rump.md#golang) code into [rumprun](docs/compilers/rump.md) unikernels 61 * **OSv**: UniK supports compiling Java, Node.js, C and C++ code into [OSv](http://osv.io/) unikernels 62 * **IncludeOS**: UniK supports compiling C++ code into [IncludeOS](https://github.com/hioa-cs/IncludeOS) unikernels 63 * **MirageOS**: UniK supports compiling [OCaml](docs/compilers/mirage.md), code into [MirageOS](https://mirage.io) unikernels 64 65 *We are looking for community help to add support for more unikernel types and languages.* 66 67 ### Supported providers: 68 * [Firecracker](https://firecracker-microvm.github.io/) 69 * [Virtualbox](docs/providers/virtualbox.md) 70 * [AWS](docs/providers/aws.md) 71 * [Google Cloud](docs/providers/gcloud.md) 72 * [vSphere](docs/providers/vsphere.md) 73 * [QEMU](docs/providers/qemu.md) 74 * [UKVM](docs/providers/ukvm.md) 75 * [Xen](docs/providers/xen.md) 76 * [OpenStack](docs/providers/openstack.md) 77 * [Photon Controller](docs/providers/photon.md) 78 79 ### Roadmap: 80 * extend unik to build & deploy [Kata Containers](https://katacontainers.io) 81 * extend unik to build & deploy [FreeRTOS](https://aws.amazon.com/freertos/) 82 * extend unik to build & deploy [LinuxKit](https://github.com/linuxkit/linuxkit) 83 * dynamic volume and application arguments configuration at instance runtime (rather than at compile time) 84 * expanding test coverage 85 * better code documentation 86 * multi-account support per provider (i.e. multiple AWS accounts/regions, etc.) 87 * migrate from [martini](https://github.com/go-martini/martini) to [echo](https://github.com/labstack/echo) 88 89 UniK is still experimental! APIs and compatibility are subject to change. We are looking for community support to help identify potential bugs and compatibility issues. Please open a Github issue for any problems you may experience, and join us on our [slack channel](http://slack.solo.io) 90 91 --- 92 93 ### Thanks 94 95 **UniK** would not be possible without the valuable open-source work of projects in the unikernel community. We would like to extend a special thank-you to [Firecracker](https://firecracker-microvm.github.io/), [rumprun](https://github.com/rumpkernel), [deferpanic](https://github.com/deferpanic), [cloudius systems](https://github.com/cloudius-systems), [mirageos](https://mirage.io) and [includeOS](http://www.includeos.org/). 96 97 <!--(for contributors): push images: CONTAINERVER=0.1 for i in $(docker images | grep projectunik/ | awk '{print $1}'); do docker push $i:$CONTAINERVER; done-->