Ubuntu云服务器Dorker 容器下jupyter远程连接踩坑记

换电脑不再费心重配环境

  • [1. 背景][1]
  • [2. 基础配置][2]
    • [2.2. dorker环境搭建][3]
    • [2.3. anaconda 安装][4]
    • [2.4. anaconda 配置][5]
  • [dorker内常见问题][6]
  • [无法从公网ip连接问题][7]
  • [后台运行法nohup][8]
  • [后台运行法Tmux][9]
  • [数据丢失问题解决]

背景

受到疫情影响,笔记本内存不够,只得租用服务器进行毕设。

基础配置

  • 1 云服务器配置
  • 2 dorker环境搭建
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo apt-key fingerprint 0EBFCD88

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo docker run hello-world
  • 3 anaconda 安装
#搜索镜像
docker search anaconda

#指定安装
docker pull continuumio/anaconda3 

#查看已安装镜像
docker images

#启用镜像
docker run -t -i -p 8888 continuumio/anaconda3 /bin/bash
  • 4 anaconda 配置
#其中遇到的问题在最后解答
ipython #打开ipython
from notebook.auth import passwd
passwd() #复制生成的密文
Enter password: #输入密码
Verify password: #确认密码

jupyter notebook --generate-config
配置文件在当前用户默认根目录的 .jupyter 文件夹下,例如: /home/zql
vi /root vi /root/.jupyter/jupyter_notebook_config.py


#粘贴方式:
#Shift insert

c.NotebookApp.ip='*'
c.NotebookApp.password = u'sha1:...刚才复制的那个密文'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 
c.NotebookApp.allow_remote_access = True
c.NotebookApp.notebook_dir = '/usr/local/mypro/pythonpro'   #指定默认打开的文件夹

#启动
jupyter notebook --allow-root

dorker内常见问题

1 容器内使用sudo 报bash: sudo: command not found

apt-get update
apt-get install sudo

2 docker基础容器中bash: vi: command not found问题解决

apt-get update
apt-get install vim

3 docker启动jupyter报错:OSError: [Errno 99] Cannot assign requested address

jupyter notebook --ip 0.0.0.0 --no-browser --allow-root

无法从公网ip连接问题

注意jupyter与dorker的端口一致:
查询端口

docker ps

/root$ docker ps
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS                     NAMES
bcbe20cce11f        continuumio/anaconda3   "/bin/bash"         2 minutes ago       Up 2 minutes        0.0.0.0:32768->8888/tcp   sharp_spence



jupyter notebook --ip 0.0.0.0  --port=8888 --allow-root

端口查询:

sudo netstat -nultp


tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      966/sshd        
tcp6       0      0 :::21                   :::*                    LISTEN      979/vsftpd      
tcp6       0      0 :::22                   :::*                    LISTEN      966/sshd        
tcp6       0      0 :::32768                :::*                    LISTEN      2359/docker-proxy

发现问题:dorker监听的端口都是TCP6,非ipv4端口,因此无法访问。如下设置:

vim /etc/sysctl.conf
net.ipv6.conf.all.forwarding = 1

# 生效配置文件
sysctl -p

大功告成~

访问顺序

#开启dorker
docker run -t -i -p 8888:8888 continuumio/anaconda3 /bin/bash
#开启jupyter
jupyter notebook --ip 0.0.0.0  --port=8888 --allow-root
#退出jupyter
Ctrl +c
#推出dorker
exit

PS:连接软件,winSCP好用

NEW 后台大法

如果要正常退出不关闭容器,请按Ctrl+P+Q进行退出容器

nohup java -server -Xms128M -Xmx512M -XX:MetaspaceSize=128M  -jar test.jar $1 $2 $3 &

(1) nohup

加在一个命令的最前面,表示不挂断的运行命令

(2) &

加载一个命令的最后面,表示这个命令放在后台执行
查看后台应用

(1)jobs命令
jobs -l
或者使用
ps
kill PID

#开启dorker
nohup docker run -t -i -p 8888:8888 continuumio/anaconda3 /bin/bash &
#开启jupyter
jupyter notebook --ip 0.0.0.0  --port=8888 --allow-root
#退出jupyter
Ctrl +c
#推出dorker
exit

更换镜像:

vi /etc/apt/sources.list

deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

question

  1. 我想重新打开jupyter的ssh,打不
  2. 每次启动容器都没有sudo,vim
  3. jupyter 中upload 的文件都没了

1 的解决方法:

screen -ls

screen -r 25450

screen有时候会没保存会话,以至于其子进程无法访问到。

  • 解决方案:Tmux
#开启默认
tmux
#指定名称
tmux  new  -s  SESSION-NAME
#查看会话列表
tmux ls
#进入一个已知会话
tmux  a  -t SESSION-NAME
#离开会话
tmux detach
#关闭会话
tmux  kill-session  -t  SESSION-NAME
#切换tmux会话终端
先按ctrl+b, 放开后再按s
  • 终止一个终端窗口(需确认)

快捷键:exit 或 先按ctrl+b, 放开后再按 &

  • 在当前窗口的基础上再打开一个新的窗口

快捷键:- 先按ctrl+b, 放开后再按c

  • 暂时退出当前会话

快捷键: 先按ctrl+b, 放开后再按 d

  • 查看面板编号

快捷键:先按ctrl+b, 放开后再按q

  • 关闭所有分屏后的窗口,即合并为一个窗口

快捷键:先按ctrl+b, 放开后再按!


2 的解决方案

docker 镜像保证稳定可重复性,因此是不可变的。如果要对docker镜像进行更新,则需要重新保存镜像。

操作命令:

#查看镜像列表
docker images
#在运行镜像时可见[root@afcaf46e8305 /]#
#记录容器ID,保持镜像运行

#用ID打包镜像
docker commit afcaf46e8305 centos-vim

'''
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
'''

在退出服务器前进行镜像的提交
迁移服务器时可由如下语句进行操作

'''镜像备份(保存为tar文件),docker save -o 容器名.tar 要保存的名字'''
docker save -o mynginx.tar mynginx_backup 

'''镜像恢复
docker load -i 打包好的容器的文件名.tar
'''

docker的在线备份


3 的解决方案
挂载目录及数据卷
数据卷是一个可供使用的特殊目录,它绕过文件系统,解决由于容器无守护进程而退出的容器,数据修改保存的问题。特性 :
1.数据卷可以在容器之间共享和重用

  1. 对数据卷的修改立马生效
    3.对数据卷的更新不会影响镜像
    4.卷会一直存在直到没有容器使用 类似于mount挂载
'''#创建数据卷'''
'''A docker run时使用-v参数可以再容器内创建一个数据卷'''
docker run --name data -v /data -t -i centos /bin/bash

'''B. 创建一个宿主机目录作为数据卷:'''
 docker run -d -P --name web -v 主机目录:容器目录 -ti centos /bin/bash

'''C. 挂载一个本机单文件作为数据卷:'''
 docker run --rm -it -v ~/.bash_history:/.bash_history centos /bin/bash

'''-------------------------------------'''

'''数据卷容器
A.创建数据卷容器/dbdata'''
 docker run -ti -v /dbdata --name dbdata centos 

'''B.让其他容器db1挂载到此容器:'''
  docker run -ti --volumes-from dbdata --name db1 centos

'''删除数据卷容器'''
 docker rm dbdata
'''删除数据卷'''
 docker rm -v /dbdata
'''------------------------------------------'''
'''数据卷容器迁移数据
  备份 '''
 docker run --volumes-from dbdata -v $(pwd):/backup --name worker centos
 tar -zcvf /backup/backup.tar.gz /dbdata '''---新建容器内部执行
恢复
 创建带数据卷的dbdata2容器'''
 docker run -v /dbdata --name dbdata2 centos -ti /bin/bash
 '''创建一个新的容器挂载到dbdata2'''
 docker run --volumes-from dbdata2 --name huifu -v $(pwd):/backup tar zxvf backup.tar.gz 

pip 镜像更换:

cd ~/.pip   # 运行此命令切换目录
mkdir ~/.pip
cd ~/.pip
touch pip.conf
sudo vi ~/.pip/pip.conf

'''
写入
[global] 
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn  # trusted-host 此参数是为了避免麻烦,否则使用的时候可能会提示不受信任
'''

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 一、Docker 简介 Docker 两个主要部件:Docker: 开源的容器虚拟化平台Docker Hub: 用...
    R_X阅读 4,377评论 0 27
  • 引言 这段时候主攻云服务 服务器 CentOS 文件目录 操作 基本操作: Docker简介: 安装Docker:...
    采香行处蹙连钱阅读 1,182评论 0 1
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 1,736评论 0 7
  • 转自:https://blog.csdn.net/zcl_love_wx/article/details/8075...
    mayiwoaini阅读 808评论 0 1
  • 萧离骑马向南不知奔了多少里路才将身后的追兵摆脱,随行的护卫全都牺牲了,他自己也身负重伤,突然马儿尖叫一声,萧离摔下...
    朱朱朱小颜阅读 514评论 11 9