🚀 Launch Week Day 4:Introducing the Alert Details Page: A Better Way to Explore Alerts.Learn More →
Socket
Book a DemoInstallSign in
Socket

mkcontainer

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mkcontainer

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

latest
Source
npmnpm
Version
1.8.3
Version published
Maintainers
1
Created
Source

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

FAQs

Package last updated on 13 Oct 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts