{"id":13484675,"url":"https://github.com/jupyter/docker-stacks","last_synced_at":"2026-10-18T22:28:08.631Z","repository":{"id":35032338,"uuid":"39144867","full_name":"jupyter/docker-stacks","owner":"jupyter","description":"Ready-to-run Docker images containing Jupyter applications","archived":false,"fork":false,"pushed_at":"2026-10-06T08:53:08.000Z","size":8549,"stargazers_count":8469,"open_issues_count":10,"forks_count":2974,"subscribers_count":180,"default_branch":"main","last_synced_at":"2026-10-11T10:58:00.066Z","etag":null,"topics":["docker","ipython","ipython-notebook","jupyter","jupyter-notebook","jupyter-notebooks","jupyterhub","jupyterlab","notebook","python"],"latest_commit_sha":null,"homepage":"https://jupyter-docker-stacks.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jupyter.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2015-07-15T15:30:00.000Z","updated_at":"2026-10-09T02:49:14.000Z","dependencies_parsed_at":"2026-09-29T08:24:52.701Z","dependency_job_id":null,"html_url":"https://github.com/jupyter/docker-stacks","commit_stats":{"total_commits":2806,"total_committers":247,"mean_commits":"11.360323886639677","dds":0.684248039914469,"last_synced_commit":"87b37b4fd818b219ecd4d42f2c14c8d454569d1b"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jupyter/docker-stacks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jupyter%2Fdocker-stacks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jupyter%2Fdocker-stacks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jupyter%2Fdocker-stacks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jupyter%2Fdocker-stacks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jupyter","download_url":"https://codeload.github.com/jupyter/docker-stacks/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jupyter%2Fdocker-stacks/sbom","scorecard":{"id":543130,"data":{"date":"2025-08-11","repo":{"name":"github.com/jupyter/docker-stacks","commit":"45abbce05f12916d93c913a62c6c65da75203683"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.1,"checks":[{"name":"Maintained","score":10,"reason":"17 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":1,"reason":"Found 4/21 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/docker.yml:434","Warn: no topLevel permission defined: .github/workflows/contributed-recipes.yml:1","Warn: no topLevel permission defined: .github/workflows/docker-build-test-upload.yml:1","Warn: no topLevel permission defined: .github/workflows/docker-tag-push.yml:1","Warn: no topLevel permission defined: .github/workflows/docker-wiki-update.yml:1","Warn: no topLevel permission defined: .github/workflows/docker.yml:1","Warn: no topLevel permission defined: .github/workflows/pre-commit.yml:1","Warn: no topLevel permission defined: .github/workflows/registry-move.yml:1","Warn: no topLevel permission defined: .github/workflows/registry-overviews.yml:1","Warn: no topLevel permission defined: .github/workflows/sphinx.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":5,"reason":"5 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2014-14 / GHSA-652x-xj99-gmcc","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2014-13 / GHSA-cfj3-7x9c-4p3h","Warn: Project is vulnerable to: PYSEC-2018-28 / GHSA-x84v-xcm2-53pg"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/contributed-recipes.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/contributed-recipes.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/contributed-recipes.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/contributed-recipes.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-build-test-upload.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/docker-build-test-upload.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-build-test-upload.yml:102: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/docker-build-test-upload.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-build-test-upload.yml:120: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/docker-build-test-upload.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-build-test-upload.yml:126: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/docker-build-test-upload.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-build-test-upload.yml:140: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/docker-build-test-upload.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-tag-push.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/docker-tag-push.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-wiki-update.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/docker-wiki-update.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-wiki-update.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/docker-wiki-update.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-wiki-update.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/docker-wiki-update.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-wiki-update.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/docker-wiki-update.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pre-commit.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/pre-commit.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pre-commit.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/pre-commit.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/registry-move.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/registry-move.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/registry-overviews.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/registry-overviews.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sphinx.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/sphinx.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sphinx.yml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/jupyter/docker-stacks/sphinx.yml/main?enable=pin","Warn: containerImage not pinned by hash: binder/Dockerfile:8","Warn: containerImage not pinned by hash: docs/using/recipe_code/custom_environment.dockerfile:2","Warn: containerImage not pinned by hash: docs/using/recipe_code/dask_jupyterlab.dockerfile:2","Warn: containerImage not pinned by hash: docs/using/recipe_code/ijavascript.dockerfile:2","Warn: containerImage not pinned by hash: docs/using/recipe_code/jupyterhub_version.dockerfile:2","Warn: containerImage not pinned by hash: docs/using/recipe_code/mamba_install.dockerfile:2","Warn: containerImage not pinned by hash: docs/using/recipe_code/manpage_install.dockerfile:2","Warn: containerImage not pinned by hash: docs/using/recipe_code/microsoft_odbc.dockerfile:2","Warn: containerImage not pinned by hash: docs/using/recipe_code/oracledb.dockerfile:2","Warn: containerImage not pinned by hash: docs/using/recipe_code/pip_install.dockerfile:2","Warn: containerImage not pinned by hash: docs/using/recipe_code/rise_jupyterlab.dockerfile:2","Warn: containerImage not pinned by hash: docs/using/recipe_code/spellcheck_notebook_v6.dockerfile:3","Warn: containerImage not pinned by hash: docs/using/recipe_code/xgboost.dockerfile:2","Warn: containerImage not pinned by hash: examples/docker-compose/notebook/Dockerfile:5: pin your Docker image by updating quay.io/jupyter/minimal-notebook to quay.io/jupyter/minimal-notebook@sha256:5b868d38f2b454cb22abb077052d341d3d7aeec2315c296c44de3b1278425782","Warn: containerImage not pinned by hash: examples/make-deploy/Dockerfile:5: pin your Docker image by updating quay.io/jupyter/minimal-notebook to quay.io/jupyter/minimal-notebook@sha256:5b868d38f2b454cb22abb077052d341d3d7aeec2315c296c44de3b1278425782","Warn: containerImage not pinned by hash: images/all-spark-notebook/Dockerfile:6","Warn: containerImage not pinned by hash: images/base-notebook/Dockerfile:6","Warn: containerImage not pinned by hash: images/datascience-notebook/Dockerfile:6","Warn: containerImage not pinned by hash: images/docker-stacks-foundation/Dockerfile:8","Warn: containerImage not pinned by hash: images/julia-notebook/Dockerfile:6","Warn: containerImage not pinned by hash: images/minimal-notebook/Dockerfile:6","Warn: containerImage not pinned by hash: images/pyspark-notebook/Dockerfile:6","Warn: containerImage not pinned by hash: images/pytorch-notebook/Dockerfile:6","Warn: containerImage not pinned by hash: images/pytorch-notebook/cuda11/Dockerfile:6","Warn: containerImage not pinned by hash: images/pytorch-notebook/cuda12/Dockerfile:6","Warn: containerImage not pinned by hash: images/r-notebook/Dockerfile:6","Warn: containerImage not pinned by hash: images/scipy-notebook/Dockerfile:6","Warn: containerImage not pinned by hash: images/tensorflow-notebook/Dockerfile:6","Warn: containerImage not pinned by hash: images/tensorflow-notebook/cuda/Dockerfile:6","Warn: npmCommand not pinned by hash: docs/using/recipe_code/ijavascript.dockerfile:22","Warn: pipCommand not pinned by hash: docs/using/recipe_code/pip_install.dockerfile:5-7","Warn: pipCommand not pinned by hash: docs/using/recipe_code/pip_install.dockerfile:11-13","Warn: pipCommand not pinned by hash: docs/using/recipe_code/spellcheck_notebook_v6.dockerfile:5-10","Warn: pipCommand not pinned by hash: images/pytorch-notebook/Dockerfile:16-21","Warn: pipCommand not pinned by hash: images/pytorch-notebook/cuda11/Dockerfile:16-21","Warn: pipCommand not pinned by hash: images/pytorch-notebook/cuda12/Dockerfile:16-21","Warn: pipCommand not pinned by hash: images/tensorflow-notebook/Dockerfile:21-25","Warn: pipCommand not pinned by hash: images/tensorflow-notebook/cuda/Dockerfile:21-24","Warn: pipCommand not pinned by hash: .github/workflows/pre-commit.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/pre-commit.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/sphinx.yml:60","Warn: pipCommand not pinned by hash: .github/workflows/sphinx.yml:61","Info:   0 out of  18 GitHub-owned GitHubAction dependencies pinned","Info:   4 out of   4 third-party GitHubAction dependencies pinned","Info:   0 out of  29 containerImage dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned","Info:   0 out of  12 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T08:44:29.353Z","repository_id":35032338,"created_at":"2025-08-20T08:44:29.353Z","updated_at":"2025-08-20T08:44:29.353Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344872684,"owners_count":38342757,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-18T02:00:06.448Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","ipython","ipython-notebook","jupyter","jupyter-notebook","jupyter-notebooks","jupyterhub","jupyterlab","notebook","python"],"created_at":"2024-07-31T17:01:29.457Z","updated_at":"2026-10-18T22:28:08.618Z","avatar_url":"https://github.com/jupyter.png","language":"Python","funding_links":["https://github.com/sponsors/mathbunnyru"],"categories":["Networking and Distributed","Python","notebook","docker","HarmonyOS","Application Recommendation","python","Notebook环境","Data Science","Notebook Environments","Runtimes/Frontends"],"sub_categories":["Cloud and Infrastructure","Windows Manager","🧠 AI Applications","Data Science Other Notes"],"readme":"# Jupyter Docker Stacks\n\n[![GitHub Actions badge](https://github.com/jupyter/docker-stacks/actions/workflows/docker.yml/badge.svg)](https://github.com/jupyter/docker-stacks/actions/workflows/docker.yml?query=branch%3Amain \"Docker images build status\")\n[![Read the Docs badge](https://img.shields.io/readthedocs/jupyter-docker-stacks.svg)](https://jupyter-docker-stacks.readthedocs.io/en/latest/ \"Documentation build status\")\n[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/jupyter/docker-stacks/main.svg)](https://results.pre-commit.ci/latest/github/jupyter/docker-stacks/main \"pre-commit.ci build status\")\n[![Discourse badge](https://img.shields.io/discourse/users.svg?color=%23f37626\u0026server=https%3A%2F%2Fdiscourse.jupyter.org)](https://discourse.jupyter.org/ \"Jupyter Discourse Forum\")\n[![Binder badge](https://static.mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyter/docker-stacks/main?urlpath=lab/tree/README.ipynb \"Launch a quay.io/jupyter/base-notebook container on mybinder.org\")\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black \"Black code formatter\")\n[![OpenSSF Scorecard](https://img.shields.io/ossf-scorecard/github.com/jupyter/docker-stacks?label=openssf+scorecard)](https://scorecard.dev/viewer/?uri=github.com/jupyter/docker-stacks \"OpenSSF Scorecard\")\n[![License badge](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/license/BSD-3-Clause \"Modified BSD License\")\n\nJupyter Docker Stacks are a set of ready-to-run [Docker images](https://quay.io/organization/jupyter) containing Jupyter applications and interactive computing tools.\nYou can use a stack image to do any of the following (and more):\n\n- Start a personal Jupyter Server with the JupyterLab frontend (default)\n- Run JupyterLab for a team using JupyterHub\n- Start a personal Jupyter Server with the Jupyter Notebook frontend in a local Docker container\n- Write your own project Dockerfile\n\n## Quick Start\n\nYou can [try the quay.io/jupyter/base-notebook image](https://mybinder.org/v2/gh/jupyter/docker-stacks/main?urlpath=lab/tree/README.ipynb) on \u003chttps://mybinder.org\u003e.\nOtherwise, the examples below may help you get started if you [have Docker installed](https://docs.docker.com/get-started/get-docker/),\nknow [which Docker image](https://jupyter-docker-stacks.readthedocs.io/en/latest/using/selecting.html) you want to use, and want to launch a single Jupyter Application in a container.\n\nThe [User Guide on ReadTheDocs](https://jupyter-docker-stacks.readthedocs.io/en/latest/) describes additional uses and features in detail.\n\n```{note}\nSince `2023-10-20` our images are only pushed to `Quay.io` registry.\nOlder images are available on Docker Hub, but they will no longer be updated.\n```\n\n### Example 1\n\nThis command pulls the `jupyter/scipy-notebook` image tagged `2026-07-28` from Quay.io if it is not already present on the local host.\nIt then starts a container running a Jupyter Server with the JupyterLab frontend and exposes the container's internal port `8888` to port `10000` of the host machine:\n\n```bash\ndocker run -p 10000:8888 quay.io/jupyter/scipy-notebook:2026-07-28\n```\n\nYou can modify the host port to which the container's port is mapped by [changing the value of the `-p` option](https://docs.docker.com/engine/containers/run/#exposed-ports) to `-p 8888:8888`.\n\nVisiting `http://\u003chostname\u003e:10000/?token=\u003ctoken\u003e` in a browser loads JupyterLab,\nwhere:\n\n- The `hostname` is the name of the computer running Docker\n- The `token` is the secret token printed in the console.\n\nThe container remains intact for restart after the Server exits.\n\n### Example 2\n\nThis command pulls the `jupyter/datascience-notebook` image tagged `2026-07-28` from Quay.io if it is not already present on the local host.\nIt then starts an _ephemeral_ container running a Jupyter Server with the JupyterLab frontend and exposes the server on host port 10000.\n\n```bash\ndocker run -it --rm -p 10000:8888 -v \"${PWD}\":/home/jovyan/work quay.io/jupyter/datascience-notebook:2026-07-28\n```\n\nThe use of the `-v` flag in the command mounts the current working directory on the host (`${PWD}` in the example command) as `/home/jovyan/work` in the container.\nThe server logs appear in the terminal.\n\nVisiting `http://\u003chostname\u003e:10000/?token=\u003ctoken\u003e` in a browser loads JupyterLab.\n\nDue to the usage of [the `--rm` flag](https://docs.docker.com/reference/cli/docker/container/run/#rm)\nDocker automatically cleans up the container and removes the file system when the container exits,\nbut any changes made to the `~/work` directory and its files in the container will remain intact on the host.\n[The `-i` flag](https://docs.docker.com/reference/cli/docker/container/run/#interactive) keeps the container's `STDIN` open, and lets you send input to the container through standard input.\n[The `-t` flag](https://docs.docker.com/reference/cli/docker/container/run/#tty) attaches a pseudo-TTY to the container.\n\n```{note}\nBy default, [jupyter's root_dir](https://jupyter-server.readthedocs.io/en/latest/other/full-config.html) is `/home/jovyan`.\nSo, new notebooks will be saved there, unless you change the directory in the file browser.\n\nTo change the default directory, you must specify `ServerApp.root_dir` by adding this line to the previous command: `start-notebook.py --ServerApp.root_dir=/home/jovyan/work`.\n```\n\n## Choosing Jupyter frontend\n\nJupyterLab is the default for all the Jupyter Docker Stacks images.\nIt is still possible to switch back to Jupyter Notebook (or to launch a different startup command).\nYou can achieve this by passing the environment variable `DOCKER_STACKS_JUPYTER_CMD=notebook` (or any other valid `jupyter` subcommand) at container startup;\nmore information is available in the [documentation](https://jupyter-docker-stacks.readthedocs.io/en/latest/using/common.html#alternative-commands).\n\n## Resources\n\n- [Documentation on ReadTheDocs](https://jupyter-docker-stacks.readthedocs.io/en/latest/)\n- [Issue Tracker on GitHub](https://github.com/jupyter/docker-stacks/issues)\n- [Jupyter Discourse Forum](https://discourse.jupyter.org/)\n- [Jupyter Website](https://jupyter.org)\n- [Images on Quay.io](https://quay.io/organization/jupyter)\n\n## Acknowledgments\n\n- Starting from `2022-07-05`, `aarch64` self-hosted runners were sponsored by [`@mathbunnyru`](https://github.com/mathbunnyru/).\n  Please, consider [sponsoring his work](https://github.com/sponsors/mathbunnyru) on GitHub\n- Starting from `2023-10-31`, `aarch64` self-hosted runners are sponsored by an amazing [`2i2c non-profit organization`](https://2i2c.org)\n- Starting from `2025-02-11`, we use GitHub-hosted `aarch64` runners\n\n## CPU Architectures\n\n- We publish containers for both `x86_64` and `aarch64` platforms\n- Single-platform images have either `aarch64-` or `x86_64-` tag prefixes, for example, `quay.io/jupyter/base-notebook:aarch64-python-3.13.14`\n- Starting from `2022-09-21`, we create multi-platform images (except `tensorflow-notebook`)\n- Starting from `2023-06-01`, we create a multi-platform `tensorflow-notebook` image as well\n- Starting from `2024-02-24`, we create CUDA enabled variants of `pytorch-notebook` image for `x86_64` platform\n- Starting from `2024-03-26`, we create CUDA enabled variant of `tensorflow-notebook` image for `x86_64` platform\n- Starting from `2025-12-02`, we create CUDA enabled variants of `pytorch-notebook` and `tensorflow-notebook` images for `aarch64` platform as well\n\n## Using old images\n\n[![Python versions badge](https://img.shields.io/badge/python-3.7%20%7C%203.8%20%7C%203.9%20%7C%203.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-blue.svg)](https://www.python.org/downloads/ \"Python versions supported\")\n\nThis project only builds one set of images at a time.\nThe weekly build (`latest` tag) is based on `Ubuntu 26.04` and `Python 3.13`.\nIf you want to use the older `Ubuntu` and/or `Python` version, you can use the following images:\n\n### Ubuntu 24.04\n\n| Build Date | Python | Tag            |\n| ---------- | ------ | -------------- |\n| 2024-10-22 | 3.11   | `b74418220768` |\n| 2025-08-11 | 3.12   | `82d322f00937` |\n| 2026-09-28 | 3.13   | `ac62373f9f60` |\n\n### Ubuntu 22.04\n\n| Build Date | Python | Tag            |\n| ---------- | ------ | -------------- |\n| 2022-10-09 | 3.7    | `b86753318aa1` |\n| 2022-10-09 | 3.8    | `7285848c0a11` |\n| 2022-10-09 | 3.9    | `ed2908bbb62e` |\n| 2023-05-30 | 3.10   | `4d70cf8da953` |\n| 2024-08-26 | 3.11   | `00987883e58d` |\n\n### Ubuntu 20.04\n\n| Build Date | Python | Tag            |\n| ---------- | ------ | -------------- |\n| 2022-10-09 | 3.7    | `1aac87eb7fa5` |\n| 2022-10-09 | 3.8    | `a374cab4fcb6` |\n| 2022-10-09 | 3.9    | `5ae537728c69` |\n| 2022-10-09 | 3.10   | `f3079808ca8c` |\n\n## Contributing\n\nPlease see the [the documentation](https://jupyter-docker-stacks.readthedocs.io/en/latest/)\nfor information about how to contribute\n[issues](https://jupyter-docker-stacks.readthedocs.io/en/latest/contributing/issues.html),\n[features](https://jupyter-docker-stacks.readthedocs.io/en/latest/contributing/features.html),\n[recipes](https://jupyter-docker-stacks.readthedocs.io/en/latest/contributing/recipes.html),\n[tests](https://jupyter-docker-stacks.readthedocs.io/en/latest/contributing/tests.html),\nand [community-maintained stacks](https://jupyter-docker-stacks.readthedocs.io/en/latest/contributing/stacks.html).\n\n## LICENSE\n\nThis project is licensed under the terms of the Modified BSD License (also known as New or Revised or 3-Clause BSD).\n\n## About the Jupyter Development Team\n\nThe Jupyter Development Team is the set of all contributors to the Jupyter project.\nThis includes all of the Jupyter subprojects.\n\nThe core team that coordinates development on GitHub can be found here:\n\u003chttps://github.com/jupyter/\u003e.\n\n## Our Copyright Policy\n\nJupyter uses a shared copyright model. Each contributor maintains copyright\nover their contributions to Jupyter. But, it is important to note that these\ncontributions are typically only changes to the repositories. Thus, the Jupyter\nsource code, in its entirety is not the copyright of any single person or\ninstitution. Instead, it is the collective copyright of the entire Jupyter\nDevelopment Team. If individual contributors want to maintain a record of what\nchanges/contributions they have specific copyright on, they should indicate\ntheir copyright in the commit message of the change, when they commit the\nchange to one of the Jupyter repositories.\n\nWith this in mind, the following banner should be used in any source code file\nto indicate the copyright and license terms:\n\n```text\n# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n```\n\n## Alternatives\n\n- [b-data](https://github.com/b-data)'s JupyterLab docker stacks - For\n  [R](https://github.com/b-data/jupyterlab-r-docker-stack),\n  [Python](https://github.com/b-data/jupyterlab-python-docker-stack),\n  [MAX/Mojo](https://github.com/b-data/jupyterlab-mojo-docker-stack) and\n  [Julia](https://github.com/b-data/jupyterlab-julia-docker-stack).\n  With [code-server](https://github.com/coder/code-server) next to JupyterLab.\n  Just Python – no [Conda](https://github.com/conda/conda) /\n  [Mamba](https://github.com/mamba-org/mamba).\n- [rocker/binder](https://rocker-project.org/images/versioned/binder.html) -\n  From the R focused [rocker-project](https://rocker-project.org),\n  lets you run both RStudio and Jupyter either standalone or in a JupyterHub\n- [jupyter/repo2docker](https://github.com/jupyterhub/repo2docker) -\n  Turn git repositories into Jupyter-enabled Docker Images\n- [openshift/source-to-image](https://github.com/openshift/source-to-image) -\n  A tool for building artifacts from source code and injecting them into docker images\n- [jupyter-on-openshift/jupyter-notebooks](https://github.com/jupyter-on-openshift/jupyter-notebooks) -\n  OpenShift compatible S2I builder for basic notebook images\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjupyter%2Fdocker-stacks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjupyter%2Fdocker-stacks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjupyter%2Fdocker-stacks/lists"}