Docker Quick Start

Ben Cook • Posted 2017-02-04 • Last updated 2022-09-07

Docker is a useful tool for creating small virtual machines called containers. Containers are instances of docker images, which are defined in a simple language. This language is usually written in a file named Dockerfile and it’s common practice to version control these files. When you run a container on your computer you get access to an entirely separate Linux environment. Better yet, you can run the same container on your laptop that runs in a battle-tested production environment, giving you the opportunity to develop and test in a realistic setting. This takes one major source of uncertainty out of the process of running your code on another machine.

Using Docker on a Mac is easy (the process is similar-ish on Windows, depending on the actual machine). Here are a few steps to get started.

Build and launch the container

First, install the latest stable client here.

Next, create a folder called hello-docker and create a file called Dockerfile in it with the following:

FROM jupyter/minimal-notebook
CMD start-notebook.sh --NotebookApp.token=''

Navigate to the hello-docker folder in your terminal and run the following:

docker build -t insecure-notebook .

Next, start your container:

docker run -d -p 8888:8888 insecure-notebook

NOTE: if you have a Jupyter notebook running on port 8888 you should shut it down first. Alternatively, you can change the port before the colon. For example, -p 8889:8888 will use port 8889 on your machine to connect to port 8888 in the Docker container.

Navigate to localhost:8888 in your browser. Welcome to your container-hosted Jupyter notebook!

Take the container down

Run docker ps to see which containers are running. You should see something like this:

>>> docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
5ccfea1e3720        insecure-notebook   "tini -- /bin/sh -..."   4 minutes ago       Up 4 minutes        0.0.0.0:8888->8888/tcp   vigilant_austin

Copy the container ID of your notebook.

Kill and delete the container:

docker rm -f <container ID>

For me, this looks like:

docker rm -f 5ccfea1e3720