19

I can use the docker extension, and right click 'attach shell' to a running container. However, my Jupyter notebooks is not running in that container.

I tried googling how to run a jupyter notebook in a docker container, but I didn't get any results.

If it makes a difference, I am trying to run my notebook in a docker container on a remote server (using VS Code remote ssh to log in)

Edit:

I also tried running

!docker exec -ti {container name} bash

In jupyter, but that cell just hangs. When I stop the cell, the notebook still does not run in the container.

SantoshGupta7
  • 5,607
  • 14
  • 58
  • 116

1 Answers1

8

Update 31.08.2022: The original approach now may cause Docker error:

standard_init_linux.go:228: exec user process caused: no such file or directory

Which is fixed if you're using system package instead of raw download from repo. In case of Ubuntu:

RUN apt-get install tini

the rest is the same:

RUN chmod +x /usr/bin/tini
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["jupyter", "notebook", "--port=8888", "--no-browser", "--ip=0.0.0.0", "--allow-root"]

Just came to the same problem. It appeared that you cannot run Jupyter from a container out of the box. But this link helped me. Basically what you need is:

  1. Add this to your dockerfile:
# Add Tini. Tini operates as a process subreaper for jupyter. This prevents kernel crashes.
ENV TINI_VERSION v0.6.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /usr/bin/tini
RUN chmod +x /usr/bin/tini
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["jupyter", "notebook", "--port=8888", "--no-browser", "--ip=0.0.0.0", "--allow-root"]

This will start jupyter inside a container on port 8888. So don't forget to expose this port in your docker-compose or docker run.

This worked for me in my local docker. I can assume that for SSH docker you need to forward 8888 port during you SSH connection from remote to your local host.

Jahjajaka
  • 839
  • 1
  • 7
  • 9