Jupyter Notebook in a AWS EC2 Instance using Docker Image | Towards Data Science

Most of the data science and machine learning professionals are in love with the Jupyter notebook. Barring few anomalies, most of the data science and machine learning works are happening in the cloud. So there is no option but to use Jupyter on the cloud.
In my previous article, I explained how you can download the Jupyter notebook on AWS Linux instance and access it on your client machine using Xming and X11 forwarding. Below is the link to that article
towardsdatascience.com
In this article, I am explaining how to access the Jupyter notebook in AWS EC2 instance directly through a Docker image. No need to install Anaconda or Jupyter in the AWS EC2 instance.
I am assuming that you already have an AWS EC2 instance and know how to access it through Putty
Prerequisite Tools
Make sure you have the latest version of the default OS packages. Especially check if firewall related packages are installed and configured. I am using a Redhat Linux instance on AWS EC2.
The first thing to confirm is iptables-services are installed. If not, install it through yum
sudo yum install iptables-services
Now you are ready to install the Docker engine. I have followed instructions from the below link for installing the Docker engine on my Red Hat Linux instance. If you have an instance with a different operating system, please check the steps for that operating system in the below link.
docs.docker.com
a. First thing first; run the below command to install all the yum utilities
sudo yum install -y yum-utils
b. Get the latest docker repository
sudo yum-config-manager --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
c. And now install the latest version of docker engine and container
sudo yum install docker-ce docker-ce-cli containerd.io
d. Start the docker service.
sudo systemctl start docker.service
If you do not get any error message, your docker service has started successfully.
e. You can also check the status of the docker service.
sudo systemctl status docker.service
Congratulations!! You have successfully installed a docker engine. Now you are ready to pull the Jupyter Notebook image.
It’s time to pull the Jupyter notebook image.
a. Run the below command to pull the docker image and start Jupyter notebook.
sudo docker run -p 8888:8888 jupyter/scipy-notebook
Wait for the image download and pull to complete.
You will get the message indicating Jupyter notebook is running and it will contain a link to Jupyter notebook.
b. Copy the link and remove the 127.0.0.1 with the public IP address of your instance. You can see the public IP address for your instance in EC2 Instance Connect tab.
c. If you get time out a message or a site can’t be reached message, your instance might not be allowing connection at port 8888.
d. Go to the security tab of your AWS instance and click on the security groups name.
e. Click on Edi inbound rules button.
e. Add a rule for port 8888 as shown below and save the rule.
f. Now refresh your browser. Jupyter notebook will come up.
Congratulations!! Your Jupyter notebook is waiting for your next data science or machine learning adventure!
Cloud and Docker images are becoming an inevitable part of data science and machine learning professionals' life. Docker images are like work already done for you. Use it as much as possible to reduce your turnaround time in projects.