题目:docker创建Ubuntu,Ubuntu创建桌面环境,本机使用VNC连接
文章目录
- 前言
- docker创建基于Ubuntu:20.04的容器
- 使用ssh连接容器
- 容器安装桌面环境
- 本机电脑使用VNC连接
- 测试用python来创建的ui能否显示
- 坑
- 参考
前言
为什么我想要用ubuntu的桌面环境?因为我有一些软件开发需要显示GUI,就这么简单。
docker创建基于Ubuntu:20.04的容器
参考:给docker中的ubuntu系统安装桌面程序:我们可以创建好容器。
🎈打开powershell或者linux终端,输入以下命令创建容器
🔻warning:千万不要用主机的10000端口,改为3316,掉坑了
docker run -tid -p 3316:22 -p 5900:5900 -p 5901:5901 --name displaytest_container --privileged=true ubuntu:20.04 /bin/bash
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yqEsPpWr-1686979724704)(images/img.png)]](https://img-blog.csdnimg.cn/b12517c5724f4bc98adae557865b4c3e.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U7kLSqNV-1686979724706)(images/img_1.png)]](https://img-blog.csdnimg.cn/4c9dfdf9c8f74689a2bb37fcc1620add.png)
🎈从docker for windows软件中,可看到容器正在运行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EhufJdLX-1686979724706)(images/img_2.png)]](https://img-blog.csdnimg.cn/43503ade67784bb4a50518a31bb0f03e.png)
使用ssh连接容器
🎈在终端输入以下命令,进入容器控制台
docker exec -it displaytest_container /bin/bash
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pG6GIM56-1686979724706)(images/img_3.png)]](https://img-blog.csdnimg.cn/dfb285222eb4446eab6c89253af51fd4.png)
🎈安装配置ssh的必要工具
apt update
apt install vim
apt install openssh-client
apt install openssh-server
apt install net-tools
🎈编辑sshd_config文件
vim /etc/ssh/sshd_config
🎈添加PermitRootLogin yes
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oQMt6bDt-1686979724707)(images/img_7.png)]](https://img-blog.csdnimg.cn/e812513f39b642b891c52f3282f682dc.png)
🎈给root设置密码
passwd root
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SHhZxAGp-1686979724707)(images/img_5.png)]](https://img-blog.csdnimg.cn/13e932964496407eb837e864e58abd6b.png)
🎈启动ssh
service ssh start
ps -e|grep ssh
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f5nidkVm-1686979724707)(images/img_6.png)]](https://img-blog.csdnimg.cn/1581f47ccc9942598e8180fe6840f5f1.png)
🎈设置容器启动就开启ssh
vim /root/.bashrc
# 在.bashrc末尾添加如下代码
service ssh start
🎈用自己喜欢的ssh工具连接,这里我用electerm
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5F82CUmf-1686979724708)(images/img_8.png)]](https://img-blog.csdnimg.cn/e2c7b040aaae4bb69897f5f1a5d11513.png)
容器安装桌面环境
🎈在electerm终端输入以下命令,安装ubuntu桌面
apt-get update
apt install -y gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal ubuntu-desktop
🎈添加vnc4server的安装源
vim /etc/apt/sources.list
添加
deb http://archive.ubuntu.com/ubuntu/ bionic universe
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EmzrUF9w-1686979724708)(images/img_9.png)]](https://img-blog.csdnimg.cn/92304b06e64a4fb093e601a107b5e440.png)
更新源
apt update
🎈安装vncserver
apt install vnc4server
🎈先启动以下vncserver生成一些文件
vncserver
初次启动需要设置密码
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qv01aBXe-1686979724708)(images/img_10.png)]](https://img-blog.csdnimg.cn/60c8ff24b1b0442693d20f1ae7907869.png)
🎈备份启动设置
cp ~/.vnc/xstartup ~/.vnc/xstartup.bak
🎈编辑vnc启动设置
vim ~/.vnc/xstartup
替换为以下内容
#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
x-window-manager &
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
🎈重新启动vnc
vncserver -kill :1
vncserver -geometry 1920x1080 :1
🎈如果是重新启动容器后再启动vnc
第一次需要进行以下设置
vim /root/.bashrc
# 在.bashrc末尾添加如下代码
rm -rf /tmp/.X1-lock
rm -rf /tmp/.X11-unix/X1
每次启动容器后,都需要执行以下命令来启动桌面(不可以用自动运行,否则终端无法运行)
vncserver -geometry 1920x1080 :1
本机电脑使用VNC连接
下载vnc客户端并安装
🎈连接,可见已经连上了
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ptNe35TA-1686979724709)(images/1.gif)]](https://img-blog.csdnimg.cn/431727847785436a84cfbb8524f10bf4.gif)
测试用python来创建的ui能否显示
🎈启动终端
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ClRn7R2-1686979724709)(images/gif_2.gif)]](https://img-blog.csdnimg.cn/7a6a0a61f7374bc5a5cdccc300a0587d.gif)
🎈安装python3-pip
apt install python3-pip
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LXhHcT12-1686979724709)(images/gif_3.gif)]](https://img-blog.csdnimg.cn/796f98fa13be4258ad4b8e024960fb65.gif)
🎈安装matplotlib
pip3 install matplotlib
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UnTItDSL-1686979724710)(images/gif_4.gif)]](https://img-blog.csdnimg.cn/1477ea74eaff42548b65dea6d7fbaf54.gif)
🎈启动python3,输入以下代码
import matplotlib.pyplot as plt
import numpy as np
mat = np.arange(0, 100).reshape(10, 10)
plt.matshow(mat)
plt.show()
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ng21RREI-1686979724710)(images/gif_5.gif)]](https://img-blog.csdnimg.cn/5854a76cb1534c0e838b503212ad66ea.gif)
坑
- 主机的端口被占用,导致映射出的端口无法进行ssh连接,windows用以下方法检测是否被占用:端口占用问题,10000端口
参考
- 通过VNC搭建Ubuntu 18.04和20.04图形界面
- Package ‘vnc4server‘ has no installation candidate_vnc4server没有可安装候选
- VNC远程桌面连接Ubuntu16.04及灰屏、仅桌面背景无图标问题解决方案_远程ubuntu背景
- 给docker中的ubuntu系统安装桌面程序
details/107593330?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-107593330-blog-95333615.235v38pc_relevant_anti_vip&spm=1001.2101.3001.4242.1&utm_relevant_index=1)








![[论文笔记]Bidirectional LSTM-CRF Models for Sequence Tagging](https://img-blog.csdnimg.cn/img_convert/38075ffe980f55263caec6b4557dfc85.png)








