Docker for fast.ai Course 1
A Jupyter environment for fast.ai's Deep Learning MOOC at https://course.fast.ai.
Runs a Jupyter notebook on port 8888 with the default password used in the course ('dl_course').
Uses CPUs by default and NVIDIA GPUs when run with nvidia-docker.
The container comes with:
- All notebooks from https://github.com/fastai/courses/tree/master/deeplearning1/nbs
- Python 2.7 (the default Python version used in the course)
- Conda
- Theano
- Keras
- PIL
- Jupyter
- bcolz
- kaggle-cli
- ...all other libraries needed for the course.
docker run -it -p 8888:8888 deeprig/fastai-course-1
nvidia-docker run -it -p 8888:8888 deeprig/fastai-course-1
Docker containers are designed to be ephemeral, so if you need persistent data for Kaggle competitions you should download it on your local machine and mount the directory as a host volume when you run the container.
For example, if your data directory is at /Users/yourname/data
, start your container with this command:
docker run -it -p 8888:8888 -v /Users/yourname/data:/home/docker/data deeprig/fastai-course-1
Your local data directory will now be visible in the container at /home/docker/data
.
Don't forget to change the path to the data folder in your notebooks as well!
All packages should ideally be part of the Dockerfile. If something is missing, please open an issue or submit a PR to update the Dockerfile. If you need to install something as a workaround, follow the steps below:
- Get a shell into the running container with
docker exec -it <container_name> /bin/bash
sudo apt-get update && sudo apt-get install package_name
You can also use docker-machine
and preconfigured AMIs for us-west-2
using the commands below.
# spin up a p2.xlarge instance
docker-machine create \
--driver amazonec2 \
--amazonec2-region='us-west-2' \
--amazonec2-root-size=50 \
--amazonec2-ami='ami-e03a8480' \
--amazonec2-instance-type='p2.xlarge' \
fastai-p2
# open Jupyter port 8888
aws ec2 authorize-security-group-ingress --group-name docker-machine --port 8888 --protocol tcp --cidr 0.0.0.0/0
# open an SSH shell on the new machine
docker-machine ssh fastai-p2
# (on the remote machine fastai-p2) run Jupyter interactively
nvidia-docker run -it -p 8888:8888 deeprig/fastai-course-1
# (on your local machine) get the IP of the new machine:
docker-machine ip fastai-p2
Open https://[NEW_MACHINE_IP]:8888 in your browser to view notebooks.
# spin up a t2.xlarge instance
docker-machine create \
--driver amazonec2 \
--amazonec2-region='us-west-2' \
--amazonec2-root-size=50 \
--amazonec2-ami='ami-a073cdc0' \
--amazonec2-instance-type='t2.xlarge' \
fastai-t2
# open Jupyter port 8888
aws ec2 authorize-security-group-ingress --group-name docker-machine --port 8888 --protocol tcp --cidr 0.0.0.0/0
# open an SSH shell on the new machine
docker-machine ssh fastai-t2
# (on the remote machine fastai-t2) run Jupyter interactively
docker run -it -p 8888:8888 deeprig/fastai-course-1
# (on your local machine) get the IP of the new machine:
docker-machine ip fastai-t2
Open https://[NEW_MACHINE_IP]:8888 in your browser to view notebooks.