远程服务器 docker XRDP 桌面访问 记录

需求描述:

  • 我现在在远程连接 一台服务器,由于需要实验环境需要GUI桌面系统,但是又想在 docker 中运行。
  • 因此,我现在首先需要通过 ssh 连接服务器,然后再服务器中连接 docker.

REF:
https://github.com/danielguerra69/ubuntu-xrdp/tree/16.04
https://blog.csdn.net/weixin_45481037/article/details/134684379?spm=1001.2014.3001.5501

1. 创建 docker xrdp 镜像。

xrdp-docker 只需要基础的Ubuntu镜像就可以,我换成了自己需要的ubuntu-cuda 镜像也是没问题的

FROM ubuntu:16.04      # 默认镜像
-----
FROM nvidia/cudagl:10.1-devel-ubuntu16.04  # 更换的 base img

NOTE:

  • 需要安装 fakeroot, 报错 2, RUN apt-get install -y fakeroot
  • 需要 给权限,报错 3
  • 国内需要更换 github 镜像,一共两个( ubuntu-16.04 )
    • 使用国内镜像 clone : https://blog.csdn.net/qq_41071191/article/details/121367039
    https://github.com/neutrinolabs/xrdp.git
    https://github.com/neutrinolabs/xorgxrdp.git
    ----
    https://gitclone.com/github.com/neutrinolabs/xrdp.git
    https://gitclone.com/github.com/neutrinolabs/xorgxrdp.git
    

编译dockerfile

  • 默认编译
    docker build -t xrdp_img -f habitat_GUI.dockerfile .
    ----
    -t: 编译img 的名称(tag)
    -f: 变成 dockerfile 的文件
    . : 在当前目录下
    
  • 使用 proxy 编译
    • 因为 dockerfile 中 要下载 github 文件,上面的gitclone镜像不好使了。由于 docker build 是自己创建一个container 进行编译,所以,需要配置编译时的网络。
    • docker build -t xrdp_img --network host -f habitat_GUI.dockerfile .
    • 运行上面命令之前,需要现在本地配置好代理环境,同时需要设置好 docker 的代理环境。
      • https://kebingzao.com/2019/02/22/docker-container-proxy/
      • https://simpleapples.com/2019/04/18/building-docker-image-behind-proxy/

2. 创建container 并连接

  • docker run -d --name uxrdp --hostname terminalserver --shm-size 1g -p 13389:3389 -p 2222:22 xrdp_img
    • docker 绑定了两个端口。
      • 将 docker 的 3389 端口和 服务器的13389 端口绑定。 docker 的 3389 端口用于xrdp 连接。
      • 将 docker 的 22 端口和服务器的 2222 端口绑定。 docker 的 22 端口用于 ssh 连接
      • 因为主机的 3389 和 22 端口都是用于自己的xrdp 和 ssh连接,所以我们不能使用这两个端口,需要更换到 13389 端口(随便选择的)。当我们访问主机的13389 端口,相当于访问 docker 的 3389 端口

  • 远程 ssh 连接, 绑定端口(端口映射)

    ssh -L 3389:localhost:13389  xxx@xxxx
    ssh -L 3389:localhost:13389 -p 12222 xxx@xxxx
    
    • 需要将 本地 3389 端口和 服务器的13389 端口绑定,即本地的3389 和 docker 的3389 绑定。
  • 通过windows xrdp 就可以连接了。

    • 默认user 和 密码都是 ubuntu
    • 可以在dockerfile 中修改

在这里插入图片描述

3. 后续使用

  • 可以ssh 映射不同端口,选择不同的图形界面进行访问。
    ssh -L 3389:localhost:3389  xxx@xxxx     # 远程服务器 GUI
    ssh -L 3389:localhost:13389  xxx@xxxx   # 远程 docker GUI
    
    本地 xrdp 连接参数不用更改,非常方便。

各种报错 😖

  1. W: GPG error: https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64 InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A4B469963BF863CC

    解决方法,在 apt update 之前删除 nivida 源

    RUN rm /etc/apt/sources.list.d/cuda.list
    RUN rm /etc/apt/sources.list.d/nvidia-ml.list
    

    https://github.com/NVIDIA/nvidia-container-toolkit/issues/257

  2. dpkg-buildpackage: warning: using a gain-root-command while being root
    dpkg-buildpackage: error: gain-root-commmand 'fakeroot' not found

    build docker 时报错。 在开始, 安装fakeroot.
    RUN apt-get install -y fakeroot


  3. 2024-05-04 10:45:32.877 [error] Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/usr/bin/docker-entrypoint.sh": permission denied: unknown Error: failed to start containers: bc264b4a0d518933f5e7c306d26423282db0e657dcd6c17fab1d76eb519a3644

    可以正常 build image,但是实例化 container 时,报错,提示权限不够。在dockerfile 中增加权限。

    ADD bin /usr/bin        
    RUN chmod +x /usr/bin/docker-entrypoint.sh   # 新增权限
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/7806.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何全面规避医疗数据安全风险?“一中心三大管控域”打开新思路!

作为医院的核心基础设施,数据库已然演变成了一种具有“资产”属性的重要元素。而随着不断变化的医疗业务场景和日趋严格的合规性要求,如何让安全全方位贯穿医疗数据的生命周期,是一项系统性的建设工作,难点诸多。 基于多年的数据…

vue3专栏项目 -- 项目介绍以及准备工作

这是vue3TS的项目,是一个类似知乎的网站,可以展示专栏和文章的详情,可以登录、注册用户,可以创建、删除、修改文章,可以上传图片等等。 这个项目全部采用Composition API 编写,并且使用了TypeScript&#…

视频剪辑神器:批量高效处理,轻松锐化视频让影片焕然一新!

视频已经成为我们记录生活、分享故事、展示才华的重要形式。然而,面对大量的视频文件,如何批量高效剪辑并提升视频质量,成为了许多人的难题。现在,我们为您带来一款视频剪辑神器,让您轻松处理视频,让您的影…

北京大学-知存科技存算一体联合实验室揭牌,开启知存科技产学研融合战略新升级

5月5日,“北京大学-知存科技存算一体技术联合实验室”在北京大学微纳电子大厦正式揭牌,北京大学集成电路学院院长蔡一茂、北京大学集成电路学院副院长鲁文高及学院相关负责人、知存科技创始人兼CEO王绍迪、知存科技首席科学家郭昕婕博士及企业研发相关负…

leetCode81. 搜索旋转排序数组 II

leetCode81. 搜索旋转排序数组 II 题目思路 可以二分后的具体思路见我的上篇博客 搜索旋转排序数组 代码 class Solution { public:bool search(vector<int>& nums, int target) {if(nums.empty()) return false;int R nums.size() - 1;while(R > 0 &&…

【Three.js基础学习】15.scroll-based-animation

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 课程要点 结合html等场景 做滚动动画 1.遇到的问题&#xff0c; 在向下滚动时&#xff0c;下方会显白&#xff08;部分浏览器&#xff09; 解决&#xff1a;alpha:true …

Finder Windows for Mac:双系统窗口,一键切换!

Finder Windows for Mac是一款专为Mac用户设计的实用工具&#xff0c;它模拟了Windows系统的窗口管理功能&#xff0c;让Mac用户也能享受到类似Windows的窗口操作体验。这款软件的主要功能是提供一个浮动面板&#xff0c;帮助用户随时即时访问打开的Finder窗口列表&#xff0c;…

某东抢购某台脚本——高版本

某东抢购某台脚本——高调 小白操作-学习参考 说明 这个脚本用于自动化京东的秒杀过程&#xff0c;特别是对于高需求商品如茅台。它展示了通过自动化工具模拟用户行为的能力&#xff0c;但同时也涉及到了使用自动化脚本可能违反网站使用条款的问题。使用此类脚本前应确保合…

魔方阵(C语言)

一、魔方阵规律&#xff1b; 8 1 6 3 5 7 4 9 2 魔方阵中各数的排列规律如下&#xff1a; (1)将1放在第1行中间一列。 (2)从2开始直到nn止&#xff0c;各数依次按此规则存放&#xff1a;每一个数存放的行比前一个数的行数减1&#xff0c;列数加1(例如上…

谷歌推出10门免费AI课程,无需教科书及费用

谷歌面向小白以及开发者分别推出了不同的AI课程~ 包含初级、中级和高级。课程章节大致包括&#xff1a;&#xff08;含教学视频、参考材料、测验&#xff09; 基础入门&#xff1a;45分钟深入了解生成式AI 简单实操&#xff1a;30分钟掌握大语言模型 了解如何释放生成式 AI S…

标准IO函数-将bmp图片修改为德国国旗样式

代码&#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <pthread.h> #include <semaphore.h…

展开说说:Android线程池解析

何谓线程池&#xff1f;本人理解是存放和管理线程的一个容器。 线程池存在的意义是什么&#xff1f; 第一&#xff1a;前面博客提到过创建和销毁线程的操作本身是有性能开销的&#xff0c;如果把使用的线程对象存起来下次用的时候直接取出来用就省去了一次创建和销毁的成本&a…

2005-2021年全国各地级市生态环境注意力/环保注意力数据(根据政府报告文本词频统计)

2005-2021年全国各地级市生态环境注意力/环保注意力数据&#xff08;根据政府报告文本词频统计&#xff09; 2005-2021年全国各地级市生态环境注意力/环保注意力数据&#xff08;根据政府报告文本词频统计&#xff09; 1、时间&#xff1a;2005-2021年 2、范围&#xff1a;2…

C语言栈的含义与栈数据操作代码详解!

引言&#xff1a;在本篇博客中&#xff0c;我们将学到数据结构——栈&#xff0c;讲到栈的含义与关于栈的数据操作代码。栈可以在顺序表、双向链表以及单链表的基础上实现&#xff0c;而于本篇博客中&#xff0c;我们选择在顺序表的基础上实现栈。 更多有关C语言和数据结构知识…

常用算法汇总

作者&#xff1a;指针不指南吗 专栏&#xff1a;算法篇 &#x1f43e;算法思维逻辑&#x1f43e; 文章目录 1.判断闰年2.计算从某天到某天的天数3.二分4. 前缀和5.差分6.图论6.1dfs6.2走迷宫 7.最短路7.1dijkstra7.2foly 8.并查集9.数论9.1gcd lcm9.2判断素数(质数)9.3分解质因…

Linux设置脚本任意位置执行

记得备份 &#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 修改文件之后记得用 source 文件名 刷新 注意&#xff1a;刷新文件之后在当前窗口…

2024/5/7 QTday2

练习&#xff1a;优化登录框&#xff0c;输入完用户名和密码后&#xff0c;点击登录&#xff0c;判断账户是否为 Admin 密码 为123456&#xff0c;如果判断成功&#xff0c;则输出登录成功&#xff0c;并关闭整个登录界面&#xff0c;如果登录失败&#xff0c;则提示登录失败&a…

[CISCN2019 华北赛区 Day1 Web2]ikun

看到提示说一定要找到lv6 这要写脚本来爆破了&#xff0c;用bp是爆破不出来的 发现LV等级都是有参数挂着的 写个脚本看一下 import requests for i in range(1,1000):payload"http://node4.anna.nssctf.cn:28150/shop?page%d"%(i)resrequests.get(payload)if "…

Misc 流量分析

流量分析简介 网络流量分析是指捕捉网络中流动的数据包&#xff0c;并通过查看包内部数据以及进行相关的协议、流量分析、统计等来发现网络运行过程中出现的问题。 在CTF比赛中&#xff0c;以及各种技能大赛对于流量包的分析取证是一种十分重要的题型。通常这类题目都是会提供…

【工作记录】openjdk-22基础镜像的构建

背景 近期使用到的框架底层都用的是springboot3.0&#xff0c;要求jdk版本在17甚至更高。 于是决定制作一个基于openjdk22的基础镜像&#xff0c;本文对这一过程进行记录。 作为记录的同时也希望能够帮助到需要的朋友。 期望效果 容器内可以正常使用java相关命令且版本是2…