在 Docker 中启动 Jupyter Notebook

news2025/7/16 5:59:21

文章目录

  • 一、创建容器
  • 二、Conda安装
  • 三、安装 Jupyter
  • 四、启动 Jupyter
  • 五、注册内核来使用虚拟环境
  • 小结

一、创建容器

  1. 可以先查看宿主机8888端口是否被占用,无输出,表明端口未被任何进程占用,如果有LISTEN,可能在创建容器的时候需要更换宿主机端口,例如 -p 8890:8888,这里以8890为例。

    netstat -tuln | grep 8888
    

    监听端口

  2. 关于容器的具体内容不过多介绍,在创建容器的时候注意要将宿主机的 8888 端口映射到容器的 8888 端口 (Jupyter 默认端口),如果宿主机8888端口被占用,那么需要修改宿主机映射的端口,比如-p 8890:8888

    docker run -it --name jupyter_container -p 8888:8888 镜像名:版本号 /bin/bash 
    
  3. 启动容器,准备创建虚拟环境。

    docker exec -it jupyter_container bash 
    

二、Conda安装

  1. 这里以miniconda为例,选择X86架构,通过wget获取安装脚本。

    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
    
  2. 增加可执行权限。

    chmod +x Miniconda3-latest-Linux-x86_64.sh
    
  3. 运行安装脚本,根据提示yes/no,然后注意一下安装路径,按需修改,在最后一步输入no

    ./Miniconda3-latest-Linux-x86_64.sh
    
  4. 配置环境变量,打开~/.bashrc,在文件最后增加如下内容并将路径修改为刚才的安装路径之后source ~/.bashrc

    export PATH="/路径/miniconda3/bin:$PATH"
    
  5. 激活环境变量之后,执行conda init,然后重启docker即可。

    docker restart jupyter_container
    

三、安装 Jupyter

  1. 创建虚拟环境jupyter

    conda create -n jupyter python=3.9
    
  2. 激活虚拟环境。

    conda activate jupyter
    
  3. 因为我们使用的是miniconda,轻量版不自带jupyter,所以需要我们手动安装。

    pip install jupyter
    
  4. 如果没有jupyter lab,也可以手动安装。

    pip install jupyterlab
    

四、启动 Jupyter

  1. 启动 Jupyter ,需要增加如下参数:--ip=0.0.0.0:绑定所有网络接口,允许外部访问 (很重要) ; --port=8888:指定 Jupyter 监听的端口,与容器端口映射一致;容器中一般是 root 用户登录,--allow-root:允许以 root 用户运行,容器中一般也没有浏览器,--no-browser:防止 Jupyter 尝试打开浏览器。

    jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser --allow-root xxxx.ipynb
    # 同理 jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root xxxx.ipynb
    
  2. 启动后,选择任意一个链接在浏览器中打开即可。

    启动界面

  3. 如果在创建容器的时候,没有使用默认的端口映射,比如使用-p 8890:8888进行映射,在拷贝链接的时候需要在宿主机浏览器中将端口号修改为8890即可正常打开 jupyter 文件。
    在这里插入图片描述

  4. 浏览器中内容如下,使用jupyter lab也是同理,可以在指令后指定打开的具体目录。
    浏览器

  5. Jupyter 的汉化,使用如下指令安装汉化包之后,启动Jupyter,找到setting,然后选择language,选择中文,之后重启内核。

    pip install jupyterlab-language-pack-zh-CN
    

    汉化

五、注册内核来使用虚拟环境

  1. 安装ipykernel用于管理 Jupyter 内核。

    pip install ipykernel
    
  2. 注册jupyter(虚拟环境名)为 Jupyter 可用内核vienv(内核名,可变),之后启动 Jupyter 就可以使用注册后的虚拟环境(内核)运行cell

    python -m ipykernel install --user --name jupyter --display-name "vienv"
    
  3. 查看已注册的内核。

    jupyter kernelspec list
    
  4. 删除注册的内核。

    jupyter kernelspec uninstall 内核名称
    

小结

关于Docker以及Jupyter的详细操作这里不过多涉及,如有其他问题,欢迎在评论区讨论,谢谢!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2387080.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CodeTop之LRU缓存

题目链接 146. LRU 缓存 - 力扣(LeetCode) 题目解析 算法原理 我们使用双向链表哈希表的形式来模拟缓存机制 首先我们要自己实现一个双链表, 自己写一个内部类, 这个内部类记录了key,value,prev,next(前驱和后继), 后续我们就通过这个内部类来构造双…

uboot常用命令之eMMC/SD卡命令

eMMC和SD卡(TF卡)是同一类设备,以下命令二者是通用,本章节主要以eMMC举例说明命令的使用。 使用help mmc可以看到mmc相关命令列表以及其对应命令用法: > help mmc 一、mmc dev 使用mmc list可以看到当前系统挂载的所有mmc设备&#xff…

知识宇宙-学习篇:学编程为什么从C语言开始学起?

名人说:博观而约取,厚积而薄发。——苏轼《稼说送张琥》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、C语言的历史地位与影响力1. 编程语言的"鼻祖"2. 现代技术的基础 二、…

Mybatis-入门程序、 数据库连接池、XML映射配置文件、MybatisX

一. Mybatis 1. Mybatis是一款优秀的持久层框架,用于简化jdbc的开发 2. Mybatis本是Apache的一个开源项目iBatis,2010年这个项目有Apache迁移到了Google code,并且改名为MyBatis,2013年11月迁移到Github 3.官网:MyBat…

BUUCTF [ZJCTF 2019]EasyHeap

前置知识点: unlink知识点和手法-CSDN博客 [ZJCTF 2019]EasyHeap [ZJCTF 2019]EasyHeap 1.准备 2.ida分析 main函数 int __fastcall __noreturn main(int argc, const char **argv, const char **envp) {int n3; // eaxchar buf[8]; // [rsp0h] [rbp-10h] BYREFunsigned …

机器学习AI精准预测复合材料性能、材料结构设计优化;数据驱动加速新材料研发,百年难遇的组合打破科研壁垒!

在人工智能与复合材料技术融合的背景下,复合材料的研究和应用正迅速发展,创新解决方案层出不穷。从复合材料性能的精确预测到复杂材料结构的智能设计,从数据驱动的材料结构优化到多尺度分析,人工智能技术正以其强大的数据处理能力…

apache http client连接池实现原理

在java开发中我们经常会涉及到http 请求接口,一般有几种方式: java自带的 HttpURLConnectionokHttpClientapache http client 一般我们使用apache http client会比较多点,在代码中会进行如下调用方式: private static class Htt…

MD5加密(Java)

首先来看数据库里的一张员工信息表: 问题: 员工表中的密码是明文存储,安全性太低。 解决思路: 将明文密码加密后存储,提高安全性。 加密方式有很多,这里简单介绍 MD5加密方式 : (详细解释请转…

[攻防世界] easyphp writeup

知识点 科学计数法的妙用 9e9 指定结尾MD5值的爆破array_search() 函数用于在数组中搜索某个值,并返回对应的键名。如果找不到该值,则返回 false 默认值匹配:可以利用整数绕过字符串匹配机制stricttrue时,数据类型和值都需要匹配…

如何不规范的设置密码

上来就干 当我们使用服务器的时候,有时候需要一些非常简单的密码,来方便使用,但是自己完全可控的环境下,我们希望我们的密码足够的简单,比如,可能它的密码就是123,或者是1? 但是当你…

分享全国数字人才技能提升师资培训班 第五期邀请函

线下(广州班): 大模型与AIGC多模态技术应用实战 线下(青岛班): Deepseek教学应用与智能体开发实战 线上班(十二大专题): DeepSeek大模型教学应用实战 大模型与AIGC技…

【Spring AI集成实战】基于NVIDIA LLM API构建智能聊天应用:从配置到函数调用全解析

【Spring AI集成实战】基于NVIDIA LLM API构建智能聊天应用:从配置到函数调用全解析 前言 在人工智能应用开发领域,大语言模型(LLM)的集成能力至关重要。NVIDIA作为全球领先的GPU厂商,其LLM API提供了对Meta Llama-3.…

Redis实战-缓存篇(万字总结)

前言: 今天结合黑马点评这个项目,讲下有关Redis缓存的一些内容,例如缓存更新策略,缓存穿透,雪崩和击穿等。 今日所学: 什么是缓存缓存更新策略缓存穿透缓存雪崩缓存击穿缓存工具封存 目录 1.什么是缓存…

Python学习笔记--Django 表单处理

注意:本笔记基于python 3.12,django 5版本,不同版本使用上有些许差别。 HTML表单是网站交互性的经典方式。下面介绍如何用Django对用户提交的表单数据进行处理。 HTTP 请求 HTTP协议以"请求-回复"的方式工作。客户发送请求时&am…

历年福州大学保研上机真题

2025福州大学保研上机真题 2024福州大学保研上机真题 2023福州大学保研上机真题 在线测评链接:https://pgcode.cn/problem?classification1 螺旋矩阵 题目描述 给定一个整数 n n n,要求打印出一个 n n n \times n nn 的螺旋矩阵。 例如&#xff…

大模型学习笔记day2 LoRA微调

LORA的核心思想基准模型不进行变化,我额外引入一部分参数来做专属内容处理,同时加上原有模型的推理能力,这部分新增加的的内容就是要训练出来的参数矩阵。 本征维度(Intrinsic Dimension):是指数据或空间中…

Maven-概述-介绍安装

目录 1.项目对象模型 2.依赖管理模型 3.仓库:用于存储资源,管理各种jar包 4.本地仓库路径 5.Maven配置本地仓库 5.1在Maven路径下新建文件夹用于本地仓库存储 5.2 复制本地仓库路径 5.3 找到配置文件路径,使用VSCode方式打开 5.4 新…

GitHub Page填写域名显示被占用

问题描述 在Github上使用github page搭建个人博客,在项目中的Settings->Pages页面里面填写个人的域名时,出现如下报错信息,显示域名被占用情况 The custom domain example.com is already taken. If you are the owner of this domain, c…

java高级 -动态代理

动态代理的概念 动态代理是一种在运行时生成代理对象的机制,无需手动编写代理类。 代理就类似于中介公司,为明星置办各种前期准备。例如歌声需要开演唱会唱歌,那么此时就需要代理对象进行置办场地,设备,然后明星只需要…

机器学习算法:线性回归

1. 基础概念 线性回归是一种用于建模连续型目标变量(如价格、销量、温度)与一个或多个特征变量(如面积、广告投入、时间)之间线性关系的统计方法。 核心思想:找到一条直线(或超平面)&#xff0…