Skip to content
pot: another container framework for FreeBSD, based on jails, ZFS and pf
Branch: master
Clone or download
pizzamig Introduce attributes for pot
    Define attributes (RW and RO)
    Add implementation of get-attr and set-attr
    Make the new subcommand available and visible
    Add proper tests
    Implement attribute support in the rc script
    Sync the CHANGELOG - deprecate pot_list
    Add set-attribute as command usable in a flavor
    Rework dns flavor to let it start at boot
Latest commit d03036b Apr 20, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
etc Introduce attributes for pot Apr 20, 2019
share Introduce attributes for pot Apr 20, 2019
tests Introduce attributes for pot Apr 20, 2019
.gitignore Introduce attributes for pot Apr 20, 2019
.travis.yml Debug travis issues Dec 1, 2017 Introduce attributes for pot Apr 20, 2019
LICENSE Adding a 3-clause BSD License Oct 4, 2017 Update Nov 18, 2018


Test Status License

Another container framework based on jails, to run FreeBSD containers on FreeBSD. Every running instance is called "pot", but less flexible than a VM. It's heavily based on FreeBSD, in particular on jails, ZFS, pf and rctl.

Currently, pot is only a bunch of shell script enforcing the pot container model, but it relay only on the command line tools provided by FreeBSD to play with jails, ZFS and so on. So, at the moment the only dependency is the operating system. That will change in the future, to provide more features.

It is an educational/experimental project, so don't expect any production quality. Yet.

The project was presented at FOSDEM 2018: video mp4 video webm slides (PDF)


A package is available, even if it could be a bit outdated. You can install it via:

# pkg install pot freebsd-release-manifests

Or you can install pot manually:

  • clone the master repo
  • add the bin directory to the PATH environment variable


Before to run any initialization, I suggest to copy etc/pot/pot.default.conf in etc/pot/pot.conf and set all variables in accord to your system.

When the pot configuration file is ready, the initialization can be performed (root privileges are needed):

# pot init
# pot create-base -r 11.2

The first command will initialize zfs datasets

The second command create a usable base, based on FreeBSD 11.2

NOTE You can use base versions that are less or equal of your host system versions.

Example: you can create a 11.1 or a 10.4 base on a FreeBSD 11.2 machine.

Example2: you can create a 10.4 base on a FreeBSD 10.4 machine, but not a 11.2 base.

Create your first pot

Now you can create a pot using the command:

# pot create -p potname -b 11.2

To start and access it, you can used the command:

# pot run potname

This command will start the pot and spawn a tcsh shell in it.

Get help

pot command line provides inline help:

# pot help
# pot help create

The first command will show all supported commands.

The second command will show the create command help.

You can’t perform that action at this time.