Getting Started with JupyterLab as a Docker Extension
December 8, 2025 · 1032 words · 5 min
JupyterLab is a web-based interactive development environment (IDE) that allows users to create and
JupyterLab is a web-based interactive development environment (IDE) that allows users to create and share documents that contain live code, equations, visualizations, and narrative text. It is the latest evolution of the popular Jupyter Notebook and offers several advantages over its predecessor, including: This article provides an overview of the JupyterLab architecture and shows how to get started using JupyterLab as a . is used by a wide range of people, including data scientists, scientific computing researchers, computational journalists, and machine learning engineers. It is a powerful interactive computing and data science tool and is becoming increasingly popular as an IDE. Here are specific examples of how JupyterLab can be used: JupyterLab can help solve problems in the following ways: Project Jupyter’s tools are available for installation via the , the leading repository of software created for the Python programming language, but you can also get the JupyterLab environment up and running using on Linux, Mac, or Windows. JupyterLab follows a client-server architecture (Figure 2) where the client, implemented in TypeScript and React, operates within the user’s web browser. It leverages the Webpack module bundler to package its code into a single JavaScript file and communicates with the server via WebSockets. On the other hand, the server is a Python application that utilizes the Tornado web framework to serve the client and manage various functionalities, including kernels, file management, authentication, and authorization. Kernels, responsible for executing code entered in the JupyterLab client, can be written in any programming language, although Python is commonly used. The client and server exchange data and commands through the WebSockets protocol. The client sends requests to the server, such as code execution or notebook loading, while the server responds to these requests and returns data to the client. Kernels are distinct processes managed by the JupyterLab server, allowing them to execute code and send results — including text, images, and plots — to the client. Moreover, JupyterLab’s flexibility and extensibility are evident through its support for extensions, enabling users to introduce new features and functionalities, such as custom kernels, file viewers, and editor plugins, to enhance their JupyterLab experience. JupyterLab is highly extensible. Extensions can be used to add new features and functionality to the client and server. For example, extensions can be used to add new kernels, new file viewers, and new editor plugins. Examples of JupyterLab extensions include: JupyterLab’s extensible architecture makes it a powerful tool that can be used to create custom development environments tailored to users’ specific needs. Running JupyterLab as a Docker extension offers a streamlined experience to users already familiar with Docker Desktop, simplifying the deployment and management of the JupyterLab notebook. Docker provides an ideal environment to bundle, ship, and run JupyterLab in a lightweight, isolated setup. This encapsulation promotes consistent performance across different systems and simplifies the setup process. Moreover, Docker Desktop is the only prerequisite to running JupyterLabs as an extension. Once you have Docker installed, you can easily set up and start using JupyterLab, eliminating the need for additional software installations or complex configuration steps. Getting started with the Docker Desktop Extension is a straightforward process that allows developers to leverage the benefits of unified development. The extension can easily be integrated into existing workflows, offering a familiar interface within Docker. This seamless integration streamlines the setup process, allowing developers to dive into their projects without extensive configuration. The following key components are essential to completing this walkthrough: Working with JupyterLabs as a Docker extension begins with opening the Docker Desktop. Here are the steps to follow (Figure 3): A JupyterLab welcome page will be shown (Figure 4). If you need to work with other languages rather than Python3 (default), you can complete a post-installation step. For example, to add the iJava kernel, launch a terminal and execute the following: Figure 5 shows the install process output of the iJava kernel package. Next, close your extension tab or Docker Desktop, then reopen, and the new kernel and language support will be enabled (Figure 6). You can begin using JupyterLab notebooks in many ways; for example, you can choose the language at the welcome page and start testing your code. Or, you can upload a file to the extension using the up arrow icon found at the upper left (Figure 7). Import a new notebook from local storage (Figures 8 and 9). If you want to import a notebook directly from the internet, you can use the option (Figure 10). This page shows an . A notebook upload from URL result is shown in Figure 11. Just like uploading a notebook, the download operation is straightforward. Select your file name and choose the option (Figure 12). A download destination option is also shown (Figure 13). The JupyterLab extension has a persistent volume for the directory, which is the default directory of the JupyterLab environment. The contents of this directory will survive extension shutdown, Docker Desktop restart, and JupyterLab Extension upgrade. However, if you uninstall the extension, all this content will be discarded. Back up important data first. This Docker extension uses a Docker image — — but you can choose one of the following available versions (Figure 14). To change the extension image, you can follow these steps: On Linux, the file can be found at: To use the JupyterLab extension to interact with other extensions, such as the MemGraph database (Figure 15), typical only require a minimal change of the host connection option. This usually means a sample notebook referrer to MemGraph host running on localhost. Because JupyterLab is another extension hosted in a different Docker stack, you have to replace with , which refers to the external IP of another extension. Here is an example: needs to be replaced by: The JupyterLab Docker extension is a ready-to-run Docker stack containing Jupyter applications and interactive computing tools using a personal Jupyter server with the JupyterLab frontend. Through the integration of Docker, setting up and using JupyterLab is remarkably straightforward, further expanding its appeal to experienced and novice users alike. The following video provides a good introduction with a complete walk-through of JupyterLab notebooks.