当前位置: 首页 > news >正文

docker创建Ubuntu,Ubuntu创建桌面环境,本机使用VNC连接

题目: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)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U7kLSqNV-1686979724706)(images/img_1.png)]

🎈从docker for windows软件中,可看到容器正在运行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EhufJdLX-1686979724706)(images/img_2.png)]

使用ssh连接容器

🎈在终端输入以下命令,进入容器控制台

docker exec -it displaytest_container /bin/bash

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pG6GIM56-1686979724706)(images/img_3.png)]

🎈安装配置ssh的必要工具

apt updateapt 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)]

🎈给root设置密码

passwd root

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SHhZxAGp-1686979724707)(images/img_5.png)]

🎈启动ssh

service ssh start
ps -e|grep ssh

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f5nidkVm-1686979724707)(images/img_6.png)]

🎈设置容器启动就开启ssh

vim /root/.bashrc
# 在.bashrc末尾添加如下代码
service ssh start

🎈用自己喜欢的ssh工具连接,这里我用electerm

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5F82CUmf-1686979724708)(images/img_8.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)]

更新源

apt update

🎈安装vncserver

apt install vnc4server

🎈先启动以下vncserver生成一些文件

vncserver

初次启动需要设置密码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qv01aBXe-1686979724708)(images/img_10.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 :1vncserver -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)]

测试用python来创建的ui能否显示

🎈启动终端

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ClRn7R2-1686979724709)(images/gif_2.gif)]

🎈安装python3-pip

apt install python3-pip

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LXhHcT12-1686979724709)(images/gif_3.gif)]

🎈安装matplotlib

pip3 install matplotlib

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UnTItDSL-1686979724710)(images/gif_4.gif)]

🎈启动python3,输入以下代码

import matplotlib.pyplot as plt
import numpy as npmat = np.arange(0, 100).reshape(10, 10)
plt.matshow(mat)
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ng21RREI-1686979724710)(images/gif_5.gif)]

  • 主机的端口被占用,导致映射出的端口无法进行ssh连接,windows用以下方法检测是否被占用:端口占用问题,10000端口

参考

  • 通过VNC搭建Ubuntu 18.04和20.04图形界面
  • Package ‘vnc4server‘ has no installation candidate_vnc4server没有可安装候选
  • VNC远程桌面连接Ubuntu16.04及灰屏、仅桌面背景无图标问题解决方案_远程ubuntu背景
  • 给docker中的ubuntu系统安装桌面程序
http://www.lryc.cn/news/93966.html

相关文章:

  • 理解redis的多线程和IO多路复用
  • iOS 开发 | 自定义不规则 label
  • client-go的Indexer三部曲之三:源码阅读
  • 收件地址解析成 省+市+区+详细地址的形式
  • 数据结构与算法基础(青岛大学-王卓)(5)
  • 微信小程序开发入门学习01-TDesign模板解读
  • 使用 Jetpack Compose 创建自定义的对话框(Dialog)
  • c++ auto学习笔记
  • 【随机种子初始化】一个神经网络模型初始化的大坑
  • 翻过那座山——Gitlab流水线任务疑难之编译有子模块的项目指南
  • 手机照片删除后如何恢复
  • SpringBoot 线上服务假死,CPU 内存正常,什么情况?
  • kotlin从入门到精通之内置类型
  • 实战指南:使用Spring Boot实现消息的发送和接收
  • 常用的数据结构——栈
  • C++完成淄博烧烤节管理系统
  • 我心中的TOP1编程语言
  • Linux工具之gdb(含移植到arm-linux系统)
  • DolphinScheduler
  • 10大白帽黑客专用的 Linux 操作系统
  • Golang每日一练(leetDay0099) 单词规律I\II Word Pattern
  • linux_centos7.9/ubuntu20.04_下载镜像及百度网盘分享链接
  • Reqable HTTP一站式开发+调试工具(小黄鸟作者另一力作、小黄鸟完美替代品)
  • Yacc 与 Lex 快速入门
  • 【开源与项目实战:开源实战】80 | 开源实战二(下):从Unix开源开发学习应对大型复杂项目开发
  • 【单周期CPU】LoongArch | 立即数扩展模块Ext | 32位算术逻辑运算单元(ALU)
  • Python实现数据结构的基础操作
  • 20230624----重返学习-vue-响应式处理思路-仿源码
  • 【MongoDB】三、使用Java连接MongoDB
  • 【C++】通讯录的基本实现,附有源码分享