docker容器安装图形桌面

2023-05-16

文章目录

    • 视频教程
    • 版本信息
    • 创建一个CONTAINER
    • ubuntu官方国内源
    • docker镜像unminimize
    • 中文环境
      • 设置中文环境
    • 安装
      • 安装TigerVNC Server
      • 安装 xfce4精简版本
    • 配置
      • 设置vnc密码
      • ~/.vnc/xstartup
    • 启动vnc服务
  • 主机防火墙放行15901端口
    • 连接vnc服务
    • 语言支持打不开

在这里插入图片描述
最近突发奇想,想在docker中安装一个图形化远程桌面。可以用作远程调试,轻量级办公。其实主要为了玩,想探索一下docker到底能不能玩图形化程序。在docker中的图形化界面 ,到底能不能做简单的轻办公?

特点:

  • docker中可以使用
  • 体积小巧
  • 核心功能都要有,不能影响使用
  • 中文界面,支持中文输入法

视频教程

https://www.bilibili.com/video/BV1mL41177Av

版本信息

操作系统:Ubuntu 20.04.3 LTS 编写日期 : 2021-12-02 作者:ITKEY

没有特别说明的地方,都是以root权限执行。

创建一个CONTAINER

示例:

docker run --name vnc -it -p 15901:5901 ubuntu bash
  • 参数--name 设置CONTAINER名称,如果为空则随机生成
  • 参数-p 设置主机与容器的端口映射主机端口15901对应容器5901
  • 这里 ubuntu对应的是镜像名称
  • bash是你要执行的命令

ubuntu官方国内源

设置方法见:https://blog.csdn.net/lxyoucan/article/details/121691910

docker镜像unminimize

非docker可忽略!!!

如果你在docker中ubuntu中配置vnc。配置完成以后,发现一个奇怪的问题。发现图形界面中,中文不全面 。有一些地方依然显示的英文的。虽然不影响,但是强迫证受不了。经过我各种研究和尝试,终于找到了原因。因为docker中的ubuntu是精简版本的,有一些软件包被精简了导致。解决办法,就是恢复正常模式。
执行以下命令:

unminimize

等待执行完成了,重启vnc服务,这时发现,部分汉化不完全的问题已经成功解决了。
这样做的缺点也很明显,使整个镜像的体积增大了。这就看你的取舍了。建议在配置vnc前执行unminimize,这样会更快一些。配置完vnc在执行也是可以,就是要等久一些。

中文环境

如果不需要中文环境,可以忽略这一步。设置中文环境会让镜像体积增大一些。
server的环境,默认是英文的。导致我们的vnc界面打开后也是英文的。如何设置成中文呢?

设置中文环境

查看当前语言环境

echo $LANG

查看当前系统是否有中文语言包

locale -a

如果没有中文则,安装中文语言包。

apt install language-pack-zh-hans

修改系统环境变量为中文

然后,修改/etc/environment(在文件的末尾追加):

LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh:en_US:en"
vim /etc/profile

增加以下内容:

LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh:en_US:en"

vim ~/.bashrc

增加以下内容:

LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh:en_US:en"

最后,执行命令:

sudo locale-gen

立马生效执行以下:

source ~/.bashrc

安装

安装TigerVNC Server

apt install tigervnc-standalone-server -y

安装 xfce4精简版本

#精简安装
sudo apt-get install -y --no-install-recommends xubuntu-desktop 
#不安装这个会报错Failed to execute child process “dbus-lauch”(xxxxx)
apt install dbus-x11 -y
#安装中文字体 ,否则会出现乱码
apt install fonts-wqy-microhei -y
#安装中文语言名和fcitx中文输入法
apt install -y \
gnome-user-docs-zh-hans \
language-pack-gnome-zh-hans \
fcitx \
fcitx-pinyin \
fcitx-table-wubi

配置

设置vnc密码

我们这里以用户itkey为例(也可以换成其他用户),以下命令用itkey用户执行。
登录你想开启vnc远程桌面的用户。如下:

#新建用户
adduser itkey
#切换到用于vnc的用户
su itkey
#设置vnc连接密码
vncpasswd

执行结果如下:

$ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)?

~/.vnc/xstartup

以下命令用itkey用户执行。

su itkey
vim ~/.vnc/xstartup

内容如下:

#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export LANG=zh_CN.UTF-8
fcitx -r
startxfce4

设置权限:

chmod u+x ~/.vnc/xstartup

启动vnc服务

vncserver :1 -localhost no -geometry=1920x1080
  • :1是端口,最终tcp端口是此数字+5900 ,也就是1+5900=5901
  • -localhost no 默认为yes,设置成no则可以非localhost也可以连接vnc
  • -geometry 设置分辨率

主机防火墙放行15901端口

firewall-cmd --add-port=15901/tcp
firewall-cmd --add-port=15901/tcp --permanent

连接vnc服务

格式:

ip地址:tcp端口号

示例:172.16.184.19:5901
这里的端口是tcp端口,假如你设置的是:1,把这个数加5900就是最终结果。
也就是1+5900=5901
在这里插入图片描述
连接后,输入前面设置的vnc密码就可以进远程桌面了。

连接后,如果出现 黑屏,鼠标就是一个小方点。那么请稍等一会儿,有可能是桌面还在加载中。如果 等待超过30秒,还是黑屏,就有可能是你的配置不正常,请检查一下~/.vnc/xstartup配置是不是正确。
或者重启一下服务试试:

vncserver -kill :1
vncserver :1 -localhost no -geometry=1920x1080

语言支持打不开

语言支持打开会闪退。
找日志发现:

Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory

解决办法:

sudo /etc/init.d/dbus start
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker容器安装图形桌面 的相关文章

  • Linux驱动开发(六)---树莓派配合硬件进行字符驱动开发

    前文回顾 Linux驱动开发 xff08 一 xff09 环境搭建与hello world Linux驱动开发 xff08 二 xff09 驱动与设备的分离设计 Linux驱动开发 xff08 三 xff09 设备树 Linux驱动开发 x
  • java代码中在双引号里面添加双引号

    一个双引号 34 34 34 输出 34 phone 34 34 110 34 String number 61 34 110 34 System out println 34 34 phone 34 34 34 43 number 43
  • Error:Execution failed for task ':app:transformClassesWithDexForDebug'解决记录

    转载请标明出处 xff1a http blog csdn net lxk 1993 article details 50511172 本文出自 lxk 1993的博客 xff1b 新的排版地址 https blog csdn net lxk
  • Android Studio里面Failed to resolve: 包名 解决方式

    Android Studio里面Failed to resolve 包名 解决方式 就像以下这种问题 Failed to resolve io reactivex rxjava 1 1 2 Failed to resolve io reac
  • 自定义View实战(一) 汽车速度仪表盘

    自定义View实战 xff08 一 xff09 汽车速度仪表盘 转载请以链接形式标明出处 xff1a http blog csdn net lxk 1993 article details 51373269 本文出自 lxk 1993的博客
  • java.lang.UnsatisfiedLinkError 解决方法

    就像这样的错误 java lang UnsatisfiedLinkError dalvik system PathClassLoader DexPathList zip file 34 data app com pckgname live
  • 关于魅族手机 安装APP提示安装失败 更新包不兼容的解决方法

    转载请以链接形式标明出处 xff1a http blog csdn net lxk 1993 article details 52943855 本文出自 lxk 1993的博客 xff1b 关于魅族手机安装app提示安装失败 xff0c 更
  • 2016过去了

    15年本来准备些总结的 xff0c 最后又不了了之了 xff0c 这次2016也拖到今天才来写 拖延症患者 2016年 前半年在一家外包公司工作 xff0c 期间做了几个外包项目 xff0c 但是并没有什么用户在用 xff0c 做了等于白做
  • 视频驱动V4L2子系统驱动架构-框架

    V4L2驱动框架 v4l2驱动架构如图所示 xff0c v4l2也就是video for linux two xff0c 那么也就是说还有One了 xff0c v4l2前面还有v4l 图中芯片模块对应Soc的各个子模块 xff0c vide
  • ROS_gazebo 设置/获取模型状态 set_model_state/get_model_state

    版权声明 xff1a 本文为CSDN博主 penge666 的原创文章 xff0c 遵循CC 4 0 by sa版权协议 xff0c 转载请附上原文出处链接及本声明 原文链接 xff1a https blog csdn net penge6
  • ROS中package.xml文件标签

    原地址 xff1a https www cnblogs com qixianyu p 6669687 html 目录 概述格式2 xff08 推荐 xff09 基本结构所需标签依赖关系Metapackages附加标签格式1 xff08 遗产
  • Linux驱动开发(十七)---树莓派PWM驱动

    前文回顾 Linux驱动开发 xff08 一 xff09 环境搭建与hello world Linux驱动开发 xff08 二 xff09 驱动与设备的分离设计 Linux驱动开发 xff08 三 xff09 设备树 Linux驱动开发 x
  • Gazebo仿真中.sdf/.world文件标签

    sdf 文件 详细代码 xff1a lt xml version 61 34 1 0 34 gt lt sdf version 61 34 1 5 34 gt lt model name 61 34 cafe 34 gt lt static
  • Jetson TX2核心板系统烧录、烧写

    1 从官网https developer nvidia com embedded jetpack 中下载sdkmanager xff0c 需登录事先在官网注册的账号 xff08 免费 xff09 xff0c 但Jetpack4 3版本一直无
  • C语言实现汉诺塔详细步骤(递归与非递归)及代码

    前言 C语言汉诺塔问题是一个经典的问题 xff0c 在学习编程的初学者中非常流行 它涉及到了递归的思想 xff0c 能够帮助我们理解递归的基本原理 首先 xff0c 我们来了解一下汉诺塔的问题 汉诺塔问题是指 xff1a 有三根柱子A B
  • C语言 | 输出月份的英文

    要成为绝世高手 xff0c 并非一朝一夕 xff0c 除非是天生武学奇才 xff0c 但是这种人 万中无一 包租婆 这道理放在C语言学习上也一并受用 在编程方面有着天赋异禀的人毕竟是少数 xff0c 我们大多数人想要从C语言小白进阶到高手
  • C语言实例:3个数从小到大排序

    需求 任意输入3个整数 xff0c 对这3个整数由小到大进行排序 xff0c 并将排序后的结果输出 源码 64 author 冲哥 64 date 2021 5 7 13 37 64 description 实现对这3个整数由小到大进行排序
  • C 预处理指令

    C 预处理指令 C语言 C 语言的预处理器 用于在编译器处理程序之前预扫描源代码 xff0c 完成头文件的包含 宏扩展 条件编译 行控制 xff08 line control xff09 等操作 编译的四个阶段 C语言标准规定 xff0c
  • c语言怎么输入3个数输出最大值

    方法 xff1a 首先使用scanf 接收从键盘输入的三个数 xff1b 然后使用 if else 语句比较三个数的大小 xff0c 获得最大值 xff1b 最后使用print 函数将最大值输出即可 c语言输入3个数输出最大值 includ
  • C 运算符中不能重载的是哪些

    C 运算符中不能重载的有 xff1a 1 条件运算符 xff1b 2 成员访问运算符 xff1b 3 域运算符 xff1b 4 长度运算符 sizeof xff1b 5 成员指针访问运算符 gt 和 重载 xff1a 让操作符可以有新的语义

随机推荐

  • scanf在c语言中的作用是什么?

    scanf 函数 scanf 是C语言中的一个输入函数 与printf函数一样 xff0c 都被声明在头文件stdio h里 xff0c 因此在使用scanf函数时要加上 include xff08 在有一些实现中 xff0c printf
  • C语言中字符串的结束标志是什么

    C语言中字符串的结束标志是 39 0 39 C语言中没有专门的字符串变量 xff0c 通常用一个字符数组来存放一个字符串 xff0c 字符串总是以 39 0 39 作为结束符 39 0 39 就是8位的00000000 xff0c 因为字符
  • Linux驱动开发(十八)---网络(网卡)驱动学习

    前文回顾 Linux驱动开发 xff08 一 xff09 环境搭建与hello world Linux驱动开发 xff08 二 xff09 驱动与设备的分离设计 Linux驱动开发 xff08 三 xff09 设备树 Linux驱动开发 x
  • c语言源文件经过编译后生成文件的后缀是什么?

    c语言源文件经过编译后 xff0c 生成文件的后缀是 obj C语言源文件后缀名是 c xff0c 编译生成的文件后缀名是 obj xff0c 连接后可执行文件的后缀名是 exe C语言创建程序的步骤 xff1a 编辑 xff1a 就是创建
  • C语言strcmp函数用法

    C语言strcmp函数用法 strcmp函数语法为 int strcmp char str1 char str2 xff0c 其作用是比较字符串str1和str2是否相同 xff0c 如果相同则返回0 xff0c 如果不同 xff0c 前者
  • C++ 空指针和野指针

    点击蓝字 关注我们 来源于网络 xff0c 侵删 1 空指针 指针变量指向内存中编号为0的空间为空指针 空指针指向的内存空间是不可以访问的 代码 xff1a include lt iostream gt using namespace st
  • 如何用C++实现动态放烟花(附源码)

    点击蓝字 关注我们 来源于网络 xff0c 侵删 一 前言 C 43 43 实现的放烟花程序 用到了EGE图形库 xff0c 没有的需要自行安装 可调项 xff1a 背景图和背景音乐 粒子模糊度 亮度以及上升速度的参数 实现的动态烟花非常好
  • C语言内存泄漏问题及其检视方法

    点击蓝字 关注我们 来源于网络 xff0c 侵删 通过介绍内存泄漏问题原理及检视方法 xff0c 希望后续能够从编码检视环节就杜绝内存泄漏导致的网上问题发生 本文通过介绍内存泄漏问题原理及检视方法 xff0c 希望后续能够从编码检视环节就杜
  • C语言进阶之 回调函数详解

    点击蓝字 关注我们 因公众号更改推送规则 xff0c 请点 在看 并加 星标 第一时间获取精彩技术分享 来源于网络 xff0c 侵删 在讲回调函数之前 xff0c 我们需要了解函数指针 我们都知道 xff0c C语言的灵魂是指针 xff0c
  • C语言和C++的区别和联系,大多数人都说错了

    点击蓝字 关注我们 因公众号更改推送规则 xff0c 请点 在看 并加 星标 第一时间获取精彩技术分享 来源于网络 xff0c 侵删 C语言和C 43 43 到底是什么关系 xff1f 首先C 43 43 和C语言本来就是两种不同的编程语言
  • 深入理解C语言中的malloc,malloc() 与 free() 原理图解

    点击蓝字 关注我们 因公众号更改推送规则 xff0c 请点 在看 并加 星标 第一时间获取精彩技术分享 来源于网络 xff0c 侵删 本文分为三个等级自顶向下地分析了glibc中内存分配与回收的过程 本文不过度关注细节 xff0c 因此只是
  • C语言项目:灰度处理技术

    Hello xff0c 今天给大家带来的是一个比较简单的图形处理技术 灰度处理技术 那么到底什么是灰度处理技术呢 xff1f 简单来说 xff0c 所谓的灰度处理技术就是把一张彩色的图片变成一张灰色的图片 如下图所示 xff0c 左边是原图
  • React Native重启APP

    有时会用到APP重启操作 xff0c 比如更新代码或者特殊情况的用户注销 0 62及以上版本 只重启JS部分 import DevSettings from 39 react native 39 DevSettings reload 详细请
  • 树莓派3 Ubuntu系统 SD卡或U盘启动

    之前先用SD卡装过Ubuntu系统后 xff0c 用着用着SD卡满了 xff0c 就拿了个U盘来重装一遍 xff0c 发现U盘按照SD卡那样的流程安装之后 xff0c 树莓派配置成可以U盘启动 xff0c 再修改刻录好的U盘里的两个文件就可
  • 手把手教你安装黑苹果之openCore-0.6.3 EFI制作全过程,非常详细

    文章目录 前言一 EFI是什么 xff1f 二 获取EFI1 Hackintosh黑苹果长期维护机型整理清单2 搜索efi 二 自制EFI1 OC Gen X图形化一键自动生成EFI 推荐 2 手动下载EFI所需要的文件下载哪些文件下载op
  • OpenCore 启动菜单界面美化增加gui界面

    前言 OpenCore 默认启动界面是类似于命令行一样的黑乎乎的界面 习惯了clover华丽的启动界面的小伙伴可能不适应了 甚至我之前以为OpenCore启动界面就是这样的不能变呢 xff1f 第一次看到感觉还是clover讨喜 其实Ope
  • secoclient全版本下载分享

    前言 工作需要使用 secoclient xff0c 同事们大多都用 Windows环境 客户提供的客户端也是Windows版本的 这就让使用Mac几个同事难受啦 用Windows虚拟机 xff1f 根据我的经验 xff0c 一般的VPN客
  • Centos升级ruby

    CentOS7 安装的ruby默认版本是 xff1a ruby v span class token punctuation span 11 43 53 span class token punctuation span ruby 2 0
  • Windows 11下载

    Windows 11是微软于2021年推出的Windows NT系列操作系统 xff0c 为Windows 10的后继者 正式版本于2021年10月5日发行 xff0c 并开放给符合条件的Windows 10设备通过Windows Upda
  • docker容器安装图形桌面

    文章目录 视频教程版本信息创建一个CONTAINERubuntu官方国内源docker镜像unminimize中文环境设置中文环境 安装安装TigerVNC Server安装 xfce4精简版本 配置设置vnc密码 vnc xstartup