I’ve written about using vagrant for 99.9% of my python work on here before (see here and here for examples). In addition to vagrant, I use jupyter notebooks on 99.9% of the work that I do, so I figured I’d spend a little time describing how I use jupyter with vagrant.
First off, you’ll need to have vagrant set up and running (descriptions for linux, MacOS, Windows). Once you have vagrant installed, we need to make a few changes to the VagrantFile to allow port forwarding from the vagrant virtual machine to the browser on your computer. If you followed the Vagrant on Windows post, you’ll have already set up the configuration that you need for vagrant to forward the necessary port for jupyter. For those that haven’t read that post, below are the tweaks you need to make.
My default VagrantFile is shown in figure 1 below.
You’ll only need to change 1 line to get port forwarding working. You’ll need to change the line that reads:
# config.vm.network "forwarded_port", guest: 80, host: 8080
to the following:
config.vm.network "forwarded_port", guest: 8888, host: 8888
This line will forward port 8888 on the guest to port 8888 on the host. If you aren’t using the default port of 8888 for jupyter, you’ll need to change ‘8888’ to the port you wish to use.
Now that the VagrantFile is ready to go, do a quick ‘vagrant up’ and ‘vagrant ssh’ to start your vagrant VM and log into it. Next, set up any virtual environments that you want / need (I use virtualenv to set up a virtual environment for every project). You can skip this step if you wish, but it is recommended.
If you set up a virtual environment, go ahead and source into it so that you are using a clean environment and then run the command below to install jupyter. If you didn’t go then you can just run the below to install jupyter.
pip install jupyter
You are all set. Jupyter should be installed and ready to go. To run it so it is accessible from your browser, just run the following command:
jupyter notebook --ip=0.0.0.0
This command tells jupyter to listen on any IP address.
In your browser, you should be able to visit your new fangled jupyter (via vagrant) instance by visiting the following url:
Now you’re ready to go with jupyter with vagrant.
Note: If you are wanting / needing to learn Jupyter, I highly recommend Learning IPython for Interactive Computing and Data Visualization (amazon affiliate link). I recommend it to all my clients who are just getting started with jupyter and ipython.
Great post, most informative, didn’t realise devops were into this.
Excellent- this was just what I needed! Thanks
Glad I could help.
Thanks! I was forgetting the “–ip=0.0.0.0” section and could not for the life of me get my browser to connect. Thanks again for the post!
Glad to help Joe.
Thanks for the post! Unfortunately this did not work for me. However what worked was adding the following line to the Vagrantfile:
config.vm.network “private_network”, ip: “192.168.33.10”
(it is commented out in your example file)
then I follow the same steps:
1. call jupyter with: jupyter notebook –no-browser –ip 0.0.0.0
2. in the browser go to 192.168.33.10:8888
Thanks Alban. I just noticed that on my local vagrant I had to do the same thing. Perhaps a change in vagrant config compared to the version I had written up in this blog.
Hi, Thanks for sharing nice information about Python.