当前位置: 首页 > 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系统安装桌面程序

相关文章:

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

题目:docker创建Ubuntu,Ubuntu创建桌面环境,本机使用VNC连接 文章目录 前言docker创建基于Ubuntu:20.04的容器使用ssh连接容器容器安装桌面环境本机电脑使用VNC连接测试用python来创建的ui能否显示坑参考 前言 为什么我想要用ubuntu的桌面环…...

理解redis的多线程和IO多路复用

参考资料 https://blog.csdn.net/TZ845195485/article/details/119745735 Redis单线程和多线程问题的背景 Redis里程碑版本迭代 Redis的单线程 主要是指Redis的网络IO和键值对读写是由一个线程来完成的,Redis在处理客户端的请求时包括获取(socket读&a…...

iOS 开发 | 自定义不规则 label

把我之前发布在简书的博客搬运过来。 目录 场景思路具体实现1. 自定义一个继承自UILabel的IrregularLabel2. 在初始化方法中进行相应初始化和设置3. 在layoutSubviews方法中进行路径的设置 最终效果箭头 label 场景 最近 App 改版,以下是截取的部分 UI 设计图&…...

client-go的Indexer三部曲之三:源码阅读

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 《client-go的Indexer三部曲》全部链接 基本功能性能测试源码阅读 本篇概览 本文是《client-go的Indexer三部曲》系列的终篇,主要任务是阅读和…...

收件地址解析成 省+市+区+详细地址的形式

项目中的源代码在我的GitHub:https://github.com/weitw/address-analyzer 先看效果: 如上图,address数输入的地址,Address对象是解析后的地址。可以支持逆推上一级,且支持地址白话解析。 一、项目介绍 1、解析规则 …...

数据结构与算法基础(青岛大学-王卓)(5)

叮叮咚咚,新一期来袭,我还在吃桃子,吃桃子,吃桃子。。。串和python的字符串差不多,数组和广义表像是python的list 文章目录 串(string) - 字符串概念及术语串的类型定义存储结构(同线性表)串的模式匹配算法…...

微信小程序开发入门学习01-TDesign模板解读

目录 1 使用模板创建小程序2 app.json3 页面布局总结 原来我们使用微信开发者工具,比较困难的是前端框架的选择上,官方也没有提供一套框架供我们使用,最近开发者工具已经提供了一套前端框架,后续我们开发的效率会因为使用模板提高…...

使用 Jetpack Compose 创建自定义的对话框(Dialog)

在 Jetpack Compose 中,对话框(Dialog)是一种常见的用户界面组件,用于展示重要的信息、确认操作或者收集用户输入。本篇博客将带你深入了解 Jetpack Compose 中的对话框,并展示如何创建自定义的对话框,以满…...

c++ auto学习笔记

一、auto的意义 在C11中赋予auto的意义是:在声明变量时,根据初始化表达式自动推断该变量的类型。声明函数时作为函数返回值的占位符(用在函数返回类型后置的情况)。 如 auto i 6; //auto推断为intauto func()->int //函数返…...

【随机种子初始化】一个神经网络模型初始化的大坑

1 问题起因和经过 半年前写了一个模型,取得了不错的效果(简称项目文件1),于是整理了一番代码,保存为了一个新的项目(简称项目文件2)。半年后的今天,我重新训练这个整理过的模型&…...

翻过那座山——Gitlab流水线任务疑难之编译有子模块的项目指南

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不是…...

手机照片删除后如何恢复

在如今移动互联网和智能手机时代,拍摄照片已经成为了人们常见的一种生活方式,尤其是通过手机拍摄照片已经成为了许多人记录生活点滴、分享经验和表达情感等的必备工具。但是,随着手机照片量的激增,意外删除手机中珍贵照片的事件也…...

SpringBoot 线上服务假死,CPU 内存正常,什么情况?

背景 开发小伙伴都知道线上服务挂掉,基本都是因为cpu或者内存不足,出现GC频繁OOM之类的情况。本篇文章区别以上的情况给小伙伴们带来不一样的服务挂掉。 还记得哔哩哔哩713事故中那场诡计多端的0吗? 图片 对就是这个0,和本次事…...

kotlin从入门到精通之内置类型

基本类型 声明变量 val(value的简写)用来声明一个不可变的变量,这种变量在初始赋值之后就再也不能重新赋值,对应Java中的final变量。 var(variable的简写)用来声明一个可变的变量,这种变量在初始…...

实战指南:使用Spring Boot实现消息的发送和接收

当涉及到消息发送和接收的场景时,可以使用Spring Boot和消息中间件RabbitMQ来实现。下面是一个简单的示例代码,展示了如何在Spring Boot应用程序中创建消息发送者和接收者,并发送和接收一条消息。 首先,你需要进行以下准备工作 确…...

常用的数据结构——栈

目录 1、入栈 2、出栈 3、获取栈顶的元素 4、从栈中查找元素 栈是一种常见的数据结构,栈的特点是后进先出,就像我们叠盘子,拿走上面的盘子才能拿到下一个。java中的栈java.util.Stack是通过java.util.Vector实现的,所以底层都…...

C++完成淄博烧烤节管理系统

背景: 这次我们结合今年淄博烧烤做一个餐厅管理系统,具体需求如下,我们选择的是餐饮商家信息管理 问题描述: 淄博烧烤今年大火,“进淄赶烤”是大家最想干的事情,淄博烧烤大火特火的原因,火的…...

我心中的TOP1编程语言

目录 一、评选最佳编程语言时需要考虑哪些标准 (一)易用性 (二)执行效率 (三)语言功能特性 (四)工具生态环境 (五)开发者社区 二、不同编程语言的优点…...

Linux工具之gdb(含移植到arm-linux系统)

文章目录 文件目录结构移植ncurses库移植gdb移植到arm板调试测试 linux主机:ubuntu-18.04 交叉编译器:arm-buildroot-linux-gnueabihf 开发板kernel:Linux 5.4.0-150-generic x86_64 开发板:100ASK_STM32MP157_PRO开发板 arm-…...

DolphinScheduler

参考 Apache DolphinScheduler v1.3.9 使用手册 内置组件 masterserverworkserverzookeepertask queuealertapiui 设计 去中心化设计 通过zk选举 UI功能 队列管理 Yarn调度器的资源队列 用户管理 租户对应的是Linux系统用户,是Worker执行任务使用的用户 用户…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理&#xff1a…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制&#xff0…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

Java 加密常用的各种算法及其选择

在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

爬虫基础学习day2

# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...