[授权发表]基于 ssh + Xpra 构建 Docker 桌面系统

2023-05-16

by Falcon of TinyLab.org
2015/05/01

最初发表:泰晓科技 – 聚焦嵌入式 Linux,追本溯源,见微知著!
原文链接:基于 ssh + Xpra 构建 Docker 桌面系统
评论说明:为更好地聚合大家的讨论,请到上面原文的评论区回复。


Docker 桌面系统

初识 Docker,发现大部分文章都只是介绍非 GUI 的应用。想到蛮多场景需要图形化界面,所以搜罗了一下 Docker 镜像:


$ sudo docker search desktop
NAME                                    DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
dorowu/ubuntu-desktop-lxde-vnc          Ubuntu with openssh-server and NoVNC on po...   12                   [OK]
rogaha/docker-desktop                   Docker Desktop enables you to create virtu...   10                   [OK]
  

发现前两名分别是:

  • dorowu/ubuntu-desktop-lxde-vnc:基于 VNCServer + noVNC 项目
  • rogaha/docker-desktop:基于 Ssh + Xpra 项目

初步试用后发现两者都非常 Cool,一个基于 Web,一个基于传统的图形界面。笔者将写两篇文章分别介绍它们,首先介绍第二个。

Xpra 初识

Xpra is ‘screen for X’, and more: it allows you to run X programs, usually on a remote host and direct their display to your local machine. It also allows you to display existing desktop sessions remotely.

Xpra is “rootless” or “seamless”, and sessions can be accessed over SSH, or password protected and encrypted over plain TCP sockets.

安装镜像:rogaha/docker-desktop


$ sudo docker pull rogaha/docker-desktop
  

启动容器


$ CONTAINER_ID=$(sudo docker run -d -p 2222:22 rogaha/docker-desktop)
  

-p 2222:22 把容器内的 Ssh 端口地址 22 映射到主机的 2222 端口。

获取登陆密码


$ echo $(sudo docker logs $CONTAINER_ID | sed -n 1p)
User: docker Password: aefieSahk2ci
  

密码为 Password 后面的字符串。

:该镜像通过 pwgen 随机产生了一个登陆密码,见 startup.sh。

连接桌面服务

通过 Ssh 启动一个 Xpra 会话

执行如下命令并输入上述密码即可:


$ ssh docker@localhost -p 2222 "sh -c './docker-desktop -s 800x600 -d 10 > /dev/null 2>&1 &'"
  

  • -p 2222 连上 docker 那边的 ssh 服务
  • -s 800x600 设置桌面的分辨率
  • -d 10 设置显示服务会话编号

通过 Xpra Attach 上述会话

这里会真正拉起图形界面。


$ xpra --ssh="ssh -p 2222" attach ssh:docker@0.0.0.0:10
  

注意事项

有其他文章介绍上述两步可直接通过如下命令加载:


ssh -Yc blowfish docker@0.0.0.0 -p 2222 ./docker-desktop -s 800x600 -d 11
  

但实际上已经无法工作,会出现如下错误然后自动退出。

Entering daemon mode; any further errors will be reported to:

/home/docker/.xpra/:11.log

通过搜索,发现该镜像作者已经告知必须采用两步操作才能正常工作,具体见:Error after login: connection failed: [Errno 2] No such file or directory。

启动效果

[外链图片转存失败(img-rYJrskXB-1562434326356)(http://www.tinylab.org/wp-content/uploads/2015/05/docker-desktop-with-ssh+xpra.jpg)]

自主构建

可直接拉下该镜像的 Dockerfile 和相关文件,自主构建。甚至根据自身需求,调整 Dockerfile 后再构建,以便满足实际需求。


$ git clone https://github.com/rogaha/docker-desktop.git
$ cd docker-desktop
$ docker build -t tinylab/docker-desktop .
  

参考资料

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

[授权发表]基于 ssh + Xpra 构建 Docker 桌面系统 的相关文章

随机推荐

  • STM32串口通信

    STM32串口通信 一 基于寄存器与基于固件库编写的差异二 stm32串口通信实战1 烧录方式2 代码及效果图 三 C语言程序里全局变量 局部变量 堆 栈等概念四 stm32的堆 栈 全局变量的分配地址 一 基于寄存器与基于固件库编写的差异
  • keil下的FreeRtos多任务程序

    keil下的Freertos多任务程序 1 手动移植FreeRtos xff08 以STM32F103为例 xff09 2 直接使用野火的模板 1 手动移植FreeRtos xff08 以STM32F103为例 xff09 用该链接下载Fr
  • 随笔小记(二十七)

    神经网络中Epoch Iteration Batchsize相关理解和说明 batchsize xff1a 中文翻译为批大小 xff08 批尺寸 xff09 简单点说 xff0c 批量大小将决定我们一次训练的样本数目 batch size将
  • 手把手教物体检测——EfficientDet

    目录 摘要 训练数据 1 下载Pytoch版的EfficientDet 2 制作数据集 3 下载EfficientNets预训练模型 4 安装模型需要的包 5 放置数据集 6 修改train py中的参数 测试 注意 摘要 谷歌大脑团队 Q
  • 简化的围棋棋子规则(C++实现)

    题目 xff1a 输入棋盘 xff1a 1 1 2 3 2 3 3 3 2 3 3 3 2 2 2 3 3 3 1 2 2 2 3 3 2 1 1 2 3 1 其中1代表空 xff0c 2代表白子 xff0c 3代表黑子 xff09 输出
  • MATLAB中将图像转换为二值图像im2bw

    在MATLAB中将图像转换为二值图像 xff0c 主要运用im2bw函数 xff0c 涉及到一个灰度门槛的数值 对于灰度图像 bw 61 im2bw I level level空着的话 xff0c 默认是0 5 level一般使用grayt
  • Ubuntu 20.04 Gazebo安装 及模型库下载

    安装参考自官方教程noetic版本 xff0c 为了安装模型库 xff0c 就一起编辑了 1 设置你的电脑来接收软件 sudo sh c 39 echo 34 deb http packages osrfoundation org gaze
  • git pull强制覆盖本地修改

    有时本地代码做了修改 xff0c 但又想放弃这部分修改 xff0c 重新在新代码基础上进行开发 xff0c 这时可用如下方法覆盖先前修改 xff0c 并拉取远程仓更新本地代码 方法一 xff1a git fetch git reset ha
  • gazebo中视觉仿真怎么使用自定义贴图的问题

    gazebo中提供了很少的贴图 xff0c 场景只是用这几张贴图 xff0c 视觉SLAM仿真很容易在不该闭环的时候闭环 xff0c 导致根本没法用 那么我们怎么添加自己的贴图呢 xff1f 首先gazebo建模 使用默认贴图 xff0c
  • 传统定位方法简介--------里程计、IMU惯性传感器以及光电编码器等

    移动机器人最初是通过自身携带的内部传感器基于航迹推算的方法进行定位 xff0c 后来进一步发展到通过各种外部传感器对环境特征进行观测从而计算出移动机器人相对于整个环境的位姿 目前为止 xff0c 形成了基于多传感器信息融合的定位方法 现有移
  • 路由器接口

    深刻认识到如果不好好学习计算机网络 xff0c 对于自己学习后台的知识有很大的阻碍 所以 xff0c 这段时间好好把这方面的知识加强一下 一般路由器上的接口分为三大类 xff1a 一 用于局域网的LAN接口 二 用于广域网接入 互联的WAN
  • UART、I2C、SPI接口常见面试问题总结

    UART 定义 xff1a Universal Asynchronous Receiver Transmitter 通用异步收发传输器 特点 xff1a 速率不快 可全双工 结构上一般由波特率产生器 UART发送器 UART接收器组成 xf
  • ubuntu18.04配置ORB-SLAM3(包含ROS)完整版教程

    ORB SLAM3安装教程 ORB SLAM3安装准备1 C 43 43 11 or C 43 43 0x Compiler2 Pangolin 61 61 出现的问题 61 61 3 OpenCV安装4 Eigen安装5 boost安装6
  • 视觉里程计--视觉slam7.1/相机运动估计视觉算法

    视觉里程计 本篇文章记录了少许阅读 视觉slam14讲 的阅读整理 xff0c 不是特别全面 xff0c 只是为了本次项目中特定任务搜查资料 xff0c 时间比较紧 xff0c 文章并没有全面涵盖所有知识点 日后若时间有空闲 xff0c 将
  • [授权发表]源码分析:动态分析 C 程序函数调用关系

    By Falcon of TinyLab org 2015 04 15 最初发表 xff1a 泰晓科技 聚焦嵌入式 Linux xff0c 追本溯源 xff0c 见微知著 xff01 原文链接 xff1a 源码分析 xff1a 动态分析 C
  • [授权发表]利用 qemu 模拟嵌入式系统制作全过程

    利用qemu模拟嵌入式系统制作全过程 by Pingbo Wen of TinyLab org 2013 08 31 最初发表 xff1a 泰晓科技 聚焦嵌入式 Linux xff0c 追本溯源 xff0c 见微知著 xff01 原文链接
  • [授权发表]Docker 快速上手:用 Docker + GitBook 写书

    By Falcon of TinyLab org 泰晓沙龙第二期 64 2015 04 26 最初发表 xff1a 泰晓科技 聚焦嵌入式 Linux xff0c 追本溯源 xff0c 见微知著 xff01 原文链接 xff1a Docker
  • 2020年最新 C# .net 面试题,月薪20K+中高级/架构师必看(一)

    笔者近几年前前后后面试了50 43 公司左右 xff0c 怎么讲呢 xff0c 每个面试官的风格都不一样 xff0c 要问的问题也不尽相同 但是面试是需要技巧的 xff0c 提前准备工作以及如何把简历写得让人眼前一亮是很有必要的 xff0c
  • [授权发表]Android加载不同DPI资源与内存消耗之间的关系

    by Will of TinyLab org 2015 04 21 最初发表 xff1a 泰晓科技 聚焦嵌入式 Linux xff0c 追本溯源 xff0c 见微知著 xff01 原文链接 xff1a Android加载不同DPI资源与内存
  • [授权发表]基于 ssh + Xpra 构建 Docker 桌面系统

    by Falcon of TinyLab org 2015 05 01 最初发表 xff1a 泰晓科技 聚焦嵌入式 Linux xff0c 追本溯源 xff0c 见微知著 xff01 原文链接 xff1a 基于 ssh 43 Xpra 构建