runnc
is the nabla-container runtime which interfaces with the container OCI runtime spec to create a nabla-container runtime. The runtime currently re-uses functionality from runc
for some setup steps, but will eventually be self-sufficient in providing nabla-container equivalent setups.
There is initial aarch64 support. For more information please check the README.aarch64 file
Getting started with the go repo!GOPATH
is set. (https://github.com/golang/go/wiki/SettingGOPATH)go get github.com/nabla-containers/runnc
sudo apt install genisoimage
sudo apt install jq
Docker major versions tested with:
We have created two ways to build and install runnc
. You may build inside a container, or perform a local build.
# Go to the repo
cd $GOPATH/src/github.com/nabla-containers/runnc
# make container-build to build runnc.
make container-build
# make container-install to install runnc
make container-install
# Go to the repo
cd $GOPATH/src/github.com/nabla-containers/runnc
# Get the neceesary binaries for the runtime
make build
# Install libseccomp on the host
sudo apt install libseccomp-dev
# Install the appropriate binaries/libraries
make install
Configure Docker to use new Runtime
sudo apt install genisoimage
sudo apt install libseccomp-dev
/etc/docker/daemon.json
, for example:{
"runtimes": {
"runnc": {
"path": "/usr/local/bin/runnc"
}
}
}
sudo docker run --rm --runtime=runnc nablact/nabla-node-base:v0.3
There are many. Some are fixable and being worked on, some are fixable but harder and will take some time, and some others are ones that we don't really know how to fix (or possibly not worth fixing).
Container runtime limitations:
Here are some missing features that we are currently working on:
/tmp
is writable.docker -v /a:/a
)runc
as an intermediate step. Right now, runnc
calls runc
which then calls nabla-run
runnc
use of interactive console/tty (i.e. docker run -it
)These are some harder features (sorted from more to less important):
.so
's in them.mmap()
for sharing memory to/from another process (nabla and not nabla)docker exec
. What exactly would it run? what do people do for microcontainers (like an image with just one statically built go binary)pthread_key_create
/ pthread_setspecific
), but it does not use the real segment-based TLS. So you would get the correct behavior, but not the best-performing implementation. Also, __thread
is not supported.Harder limitations that we don't know how to fix (nor we don't know if they should be fixed):
fork()
. Should a nabla process fork another nabla process (unikernel)? a single unikernel can't run multiple address spacesRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4