How to Setup Docker in FreeBSD
Jan 19, 2020 19:09 · 337 words · 2 minutes read
Right now, you can’t run docker natively on FreeBSD. I understand that there are arguably better alternatives to Docker in the FreeBSD universe like using jails, but it’s hard to adjust to this if you’re coming from Linux. Also, for many projects out here, Docker is the preferred containerisation method of use, so rest assured, alot of READMEs out here have instructions for a Docker set-up, not jails.
Some people would ask, why not build Docker from source? Well, that’s not
possible for now because Docker uses some Linux Kernel features like namespaces
and cgroups which are absent in FreeBSD. To make this work natively in FreeBSD,
someone would have to work around this. This has been attempted before but the
project has been stale for some time now. The only practical solution left is
running Docker inside a Linux VM inside FreeBSD. In this post, we’ll be using
docker-machine
and virtualbox
to do just that.
First, you need to install a docker-client, docker-machine and virtualbox by:
sudo pkg install docker docker-machine virtualbox-ose
After installing virtualbox, you need to load the vboxdrv
kernel module by
adding vboxdrv_load="YES"
in /boot/loader.conf
. You should also add your
current user to your vboxusers
group in order to use vbox:
sudo pw groupmod vboxuser -m <username>
Once you are done, reboot your workstation in order to load the virtualbox kernel modules.
I decided to use docker-machine for setting up docker because it lets me easily create Docker hosts on my computer by creating servers, installing docker on them and configuring Docker client to talk to them [0] and it’s painless to use:
# Create the virtual box host
docker-machine create -d virtualbox default
# List all the hosts present:
docker-machine ls
Now you should set up your environment variables, so that your docker client can be able to use docker installed inside virtualbox:
eval "$(docker-machine env default)"
You can opt to stick that fella ^ in your .bashrc
or .zshrc
file. With that,
you can run docker in FreeBSD :)