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

docker容器安装图形界面

拉取镜像,创建容器(其中3389端口为远程桌面所需所需,5901端口为VNC连接所需),进入容器:

docker pull ubuntu
docker run -dit --name test -p 2222:22  -p 3390:3389 -p 5901:5901 --privileged=true ubuntu
docker exec -it test /bin/bash

(在容器内)更新apt源,安装ssh服务等工具,修改root密码:

apt update
apt install openssh-server net-tools vim
passwd root

修改/etc/ssh/sshd_config 文件,添加内容

 PermitRootLogin yes

启动ssh服务:

service ssh start

此时可以用ssh工具连接该容器,其中[ip]填ip地址,若wsl则填127.0.0.1:

ssh root [ip] -p 2222

下面介绍几种本人尝试过的为容器安装图形界面的方法。

xfce4桌面+MobaXterm(推荐)

在/etc/ssh/sshd_config文件中添加

AddressFamily inet 
AllowTcpForwarding yes 
X11Forwarding yes 
X11DisplayOffset 10 
X11UseLocalhost yes

重启ssh服务(每次登陆之前必须在容器中执行)并安装软件包:

service ssh restart
apt install xorg xdm xfce4 dbus-x11

用MobaXterm连接容器,选择SSH填入ip,username,port,可以通过执行命令

xclock

如果弹出一个时钟的界面则可以验证图形界面安装成功。
再开一个SSH会话,同上填入ip,username,port,特别的Remote environment 选择 Xfce4 desktop,如下图:
在这里插入图片描述

即可得到如下的图形化界面:
在这里插入图片描述
如果右键打不开terminal,可以参考:vnc viewer远程连接xfce桌面无法打开terminal终端
该方法配置简单,且本人在两个不同镜像创建的容器都测试过都正常,故最推荐。

xfce4桌面+Windows远程连接(一般)

安装一些软件包,并将xrdp用户添加到ssl-cert用户组

apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils xrdp ufw
adduser xrdp ssl-cert

编辑/etc/xrdp/xrdp.ini文件,添加内容

exec startxfce4

启动xrdp服务,并开启3389端口

service xrdp start
ufw allow 3389

后面每次启动容器时需要执行

service xrdp restart

打开Windows的远程连接:
在这里插入图片描述

连接成功的话则显示
在这里插入图片描述
该方法配置简单且不需要借助其他软件连接工具,但是本人在两个不同镜像创建的容器测试时有一个无法正常连接,故一般推荐。

gnome桌面+VNC(不推荐)

在/etc/apt/sources.list文件中添加VNC的源:

echo deb http://archive.ubuntu.com/ubuntu/ bionic universe

执行命令:

apt update

若报错The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 3B4FE6ACC0B21F32,则执行:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys  3B4FE6ACC0B21F32

继续报错E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation,执行:

apt install gnupg

安装一些软件包,并启动vncserver:

apt install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal ubuntu-desktop vnc4server
vncserver

编辑 ~/.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 &

编辑/root/.bashrc文件,在末尾添加内容:

rm -rf /tmp/.X1-lock
rm -rf /tmp/.X11-unix/X1

再执行命令,重启vncserver :

vncserver -kill :1
vncserver -geometry 1920x1080 :1

此时打开VNC客户端:
在这里插入图片描述
若正常连接,则显示:
在这里插入图片描述
该方法配置较复杂容易出现各种报错,而且本人尝试了两个不同镜像创建的容器测试时均遇到问题,一个无法连接,另一个连接上了但存在无法显示标题栏以及打不开终端等问题,故不推荐。

参考:
使用Docker Desktop在windows安装ubuntu系统实现FinalShell远程登录,方便本地学习。
Docker容器显示图形到宿主机屏幕
为docker安装图形界面和配置远程桌面连接
docker创建Ubuntu,Ubuntu创建桌面环境,本机使用VNC连接

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 指针(二)
  • 【Python机器学习】NLP概述——超空间简述
  • 如何在项目管理中完成项目立项?
  • 图论:描述有限离散集合中元素间关系
  • 春游c++
  • 聚合智链已获道富环球投资,正式上线AI合约策略资金托管平台
  • 参考博客汇总
  • Android.bp和Android.mk文件有的区别
  • 深入理解 GC 原理、调度与调优
  • IO进程文件操作
  • scrapy--图片管道-ImagesPipeline
  • Flutter Web 正式官宣弃用 HTML renderer , Canvas 路线成为唯一
  • [mysql][sql]安装完mysql8跨主机不能访问解决办法
  • Science Robotics 与蜜蜂群互动的蜂窝型机器人系统
  • web测试之功能测试常用的方法有哪几种?有什么要点要注意?
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • Angular数据绑定机制
  • flask接收请求并推入栈
  • Javascript Math对象和Date对象常用方法详解
  • node 版本过低
  • php ci框架整合银盛支付
  • 给新手的新浪微博 SDK 集成教程【一】
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 手写双向链表LinkedList的几个常用功能
  • 因为阿里,他们成了“杭漂”
  • 主流的CSS水平和垂直居中技术大全
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 说说我为什么看好Spring Cloud Alibaba
  • ​ArcGIS Pro 如何批量删除字段
  • ​linux启动进程的方式
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #565. 查找之大编号
  • (1)(1.13) SiK无线电高级配置(六)
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (7)STL算法之交换赋值
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (四)Linux Shell编程——输入输出重定向
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • .form文件_SSM框架文件上传篇
  • .NET 材料检测系统崩溃分析
  • .NET 解决重复提交问题
  • .NET 中创建支持集合初始化器的类型
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强
  • .net中的Queue和Stack
  • ??Nginx实现会话保持_Nginx会话保持与Redis的结合_Nginx实现四层负载均衡
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • @synthesize和@dynamic分别有什么作用?