Ops is a tool for creating and running a Nanos unikernel. It is used to package, create and run your application as a nanos unikernel instance.
Check out the DOCS
Most users should just download the binary from the website:
curl https://ops.city/get.sh -sSfL | sh
Building from source is easy if you have used Go before.
This program requires GO Version 1.13.x or greater.
Installing from source follows these general steps:
Install dependencies:
- `make deps`
Build:
- `make build`
osx notes:
GO111MODULE=on go build -ldflags "-w"
For detailed instructions please consult the documentation.
Before learning more about ops
it is a good idea to see some basic usage
examples. Below are links to simple examples using various programming platforms:
Let's run your first unikernel right now.
Throw this into hi.js:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8083, "0.0.0.0");
console.log('Server running at http://127.0.0.1:8083/');
Then you can run it like so:
ops load node_v11.5.0 -p 8083 -f -n -a hi.js
Want to push your app out to the cloud?
For Google: https://nanovms.gitbook.io/ops/google_cloud
For AWS: https://nanovms.gitbook.io/ops/aws
Languages:
Applications:
- Nginx
- HAProxy
- Tarantool
- Hiawatha
- Mosquitto
- Kache
- Gnatsd
- Wasmer
You can always find more pre-made packages via:
ops pkg list
ops build <app>
ops run <app>
OR
ops run -p <port> <app>
ops run -p <port> -c <file> <app>
ops config files are plain JSON, below is an example
{
"Args":["one","two"],
"Dirs":["myapp/static"]
}
New users wishing to play around in a dev environment are encouraged to use the default user-mode networking. Other production users are encouraged to utilize native cloud builds such as Google Cloud which handle networking for you.
Only advanced/power users should use the bridge networking option.
Feel free to open up a pull request. It's helpful to have your OPS version and the release channel you are using.
Also - if it doesn't work on the main release you can try the nightly - the main release can tail the nightly by many weeks sometimes.
ops version
get the release channel (or nightly)
ls .ops/
if using a package get the package hash:
cat .ops/packages/manifest.json| jq '."gnatsd_1.4.1"'
If you have an idea for a new feature and it might take longer than a few hours or days to do it's worth opening a feature request tkt to ideate it first before jumping into code. There might be someone already working on the feature or plans to do something entirely different.
Feel free to email security at.
If you are having trouble running a particular application please feel free to open an issue and we can take a look. In general we'll only want to support the latest release from a given application/project, however if you really want/need support for something older there are paid support plans available - contact the folks at https://nanovms.com .