Docker

The new hotness in the Linux container space (because nobody remembers LXC anymore)

Category Date Link Notes
Base Images 2015 gliderlabs/alpine A minimal Alpine Linux base image
phusion/baseimage-docker an arguably sane Ubuntu base image
CLI codekitchen/dinghy a nice wrapper that sets up a host NFS server and other niceties
Wharfee a nice CLI wrapper
2014 dockersh Segregate logged in users into different containers
Distros 2013 Core OS a lightweight distro focused on containers, since acquired by RedHat
GUI 2016 Portainer a simple NodeJS Web UI
2015 Portus A registry front-end that works with the v2 registry and has some user management features.
2014 Seagull A Web UI for container management
Mac Alternatives 2019 boot2docker-xhyve a clean way to run Docker inside Hypervisor.framework
Network 2018 pipework map physical interfaces to specific containers
2015 socketplane Auto-discovery and OVS for inter-host traffic
2014 weave inter-host tunneling, with encryption
OCI Tools 2019 docker-slim performs simple runtime analysis to remove unnecessary libraries and slim down images
2018 buildah a CLI tool for builting OCI container images from Dockerfiles
Orchestration 2015 Kubernetes The current industry favorite
Rancher Still arguably one of the nicer options in 2018
Other runtimes 2019 podman aims for 1:1 CLI parity (see also Buildah and Skopeo)
2018 Singularity a different take on containers, not quite OCI compliant
PaaS 2020 CapRover a nice web front-end for Docker Swarm

Setting up boot2docker manually on Parallels

Since I don’t have Parallels Pro, I run Docker on my older Macs like this:

  • Download a recent release and put the ISO someplace safe
  • Create a new VM manually by dragging the ISO to Parallels (use the Shared or NAT network type)
  • After first boot, use fdisk to create a primary partition in /dev/sda and format it using mkfs.ext4 -L boot2docker-data /dev/sda1
  • Reboot so that it gets mounted and used for certificate storage
  • Do brew install docker (which gets you the CLI)
  • Set up port forwarding for port 2376 and a local port to the VM’s SSH port
  • SSH into the VM (docker/tcuser) and copy the *.pem files from /var/lib/boot2docker/tls to your ~/.docker folder
  • Set and export DOCKER_HOST and DOCKER_TLS_VERIFY accordingly:
export DOCKER_HOST=localhost:2376
export DOCKER_TLS_VERIFY=1

Useful Dockerfile Snippets

Base Image Description Dockerfile snippet
Ubuntu Installing the Oracle JDK (and setting the EULA)
RUN echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections \
 && add-apt-repository -y ppa:webupd8team/java \
 && apt-get install -y java-common oracle-java8-installer oracle-java8-set-default \
 && rm -rf /var/cache/oracle-jdk8-installer

Building The Docker Registry From Scratch (on ARM, too!)

Very simple, really, once you have installed. Quite quick on a 2, too:

export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$PATH
# this fetches godep and golint
go get github.com/tools/godep github.com/golang/lint/golint
# this fetches and builds the registry
go get github.com/docker/distribution/cmd/registry
# test it with the default config
$GOPATH/bin/registry $GOPATH/src/github.com/docker/distribution/cmd/registry/config.yml

This page is referenced in: