1.8.3 • Published 3 years ago

mkcontainer v1.8.3

Weekly downloads
4
License
MIT
Repository
github
Last release
3 years ago

mkcontainer

Lightweight container builder for Linux backed by make and systemd-nspawn.

npm install -g mkcontainer

Usage

First make sure you have systemd-nspawn installed.

Then make a Containerfile which has a format similar to a Dockerfile

FROM ubuntu:xenial
RUN rm -f /etc/resolv.conf && echo '8.8.8.8' > /etc/resolv.conf
RUN apt-get update
RUN apt-get install -y git vim curl
RUN curl -fs https://raw.githubusercontent.com/mafintosh/node-install/master/install | sh
RUN node-install 8.9.1

The above Containerfile installs Ubuntu 16.04 (xenial), then updates the name server so dns works, and installs git, vim, curl and node 8.9.1.

To make a container from that Containerfile simply cd into the same dir and run

mkcontainer

This should produce a Makefile, that is automatically run and a container called container.img. The container is around 4GB but should be sparse (see ls -lsh for the actual size)

If you run mkcontainer again the build should be cached. Similar to docker, when you update a line in the Containerfile you cache invalidate every line below it. There is a global cache for each layer stored in ~/.mkcontainer

To run the produced container simply do make run but you can also run it with systemd, ie sudo systemd-nspawn -a -i container.img /bin/bash

Containerfile

The Containerfile currently understands the following primitives

  • FROM os:version - will bootstrap your container. os can be Ubuntu, Arch, Alpine and Debian currently. Note that Arch and Alpine doesn't have a version.
  • RUN cmd - run a shell command inside the container
  • ENV name=value, name=value... - set env vars for the script. You can use host env resolution in the values.
  • COPY from to - copy a file into the container. to should be an absolute path.
  • MOUNT from to - auto mount a folder from the host into the container when running
  • CMD cmd - the command to execute when the container runs

License

MIT

1.8.2

3 years ago

1.8.1

3 years ago

1.8.0

3 years ago

1.7.1

3 years ago

1.4.4

3 years ago

1.7.0

3 years ago

1.6.1

3 years ago

1.6.0

3 years ago

1.5.0

3 years ago

1.8.3

3 years ago

1.4.3

6 years ago

1.4.2

6 years ago

1.4.1

6 years ago

1.4.0

6 years ago

1.3.0

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.2

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago