56 次阅读

Ubuntu docker配置桌面环境

前言

我搞开发基本都是在 Ubuntu 下,但是有时候环境复杂,在主机上搞容易破坏依赖导致系统异常以及不同开发需要的环境不同,要各自满足则要借助 docker,但是纯终端是不够用的,有时候需要图形界面环境。因此就想了一种方案,使用远程桌面的方式进行连接。

测试环境

系统:Ubuntu 20.04 x86_64

容器镜像:Ubuntu 20.04 x86_64

Docker 版本: 20.10.12

操作

获取一个 Ubuntu 20.04 镜像

docker pull ubuntu:20.04
新建一个容器,注意创建时转发 3389 端口(RDP)
docker run -itd -p 3389:3389 ubuntu:20.04 /bin/bash
进入容器
docker exec -it [NAME] /bin/bash

更新索引

apt update

保证 https 镜像源支持

apt install -y ca-certificates

换源参考:https://blog.iyatt.com/?p=1495(不换源速度非常慢),初始的镜像是裸机环境,没有编辑器,可以在更新索引后安装 vim、nano等等,然后编辑 /etc/apt/sources.list 。

apt install -y vim nano

# 新手没用过 vim,不了解命令,一般建议用 nano
# 编辑时删除原有内容,将国内镜像站地址保存进去
nano /etc/apt/sources.list

apt update

配置桌面相关环境

apt install -y xfce4 xrdp

安装中会遇到几个选项:

地区选 6 (Asia 亚洲)

城市选自己的,当然不是所有都有,选中国的就行(关系到时区设置),我在重庆就选 19

键盘布局选 Chinese (中文) 18 回车后再选 1

显示管理器选 2 lightdm

设置默认桌面,选 xfce4-session 对应的数字

update-alternatives --config x-session-manager

设置字符编码

apt install -y locales
dpkg-reconfigure locales

添加 zh_CN.UTF-8,以及设置为默认(必须因素:不设置,可能远程桌面中的终端无法启动,会报错)

然后为容器内的系统设置一个密码(远程连接的时候需要,并且要记住),

另外需要记住一个常识,Linux下输入密码什么都不会显示,不要认为没有输入成功

passwd

然后执行命令启动 xrdp(以后关闭容器重新进入后也要用这个命令进行启动)

service xrdp start

如果不想每次进入容器还要手动执行启动 xrdp,可以在首次配置时执行

echo "service xrdp start" >> /root/.bashrc

现在需要知道容器的 IP 地址,先在容器打开的终端安装网络工具

apt install -y net-tools

然后执行 ifconfig 命令获取自身 IP,inet 后即是

之后在主机上安装 RDP 客户端

sudo apt install -r rdesktop

然后执行命令进行连接

# rdesktop [IP地址] -u [用户名] -g [分辨率]
# 这里 docker 容器内部 IP 为上面查询到的 172.17.0.2,用户名为 root,我的主机显示器分辨率有 1920x1080,但是主机远程连接客户端因为边框无法显示完全,因此我就设置 1840x1000

rdesktop 172.17.0.2 -u root -g 1840x1000

然后密码输入上面步骤中设置的

连接成功

成品镜像

这里也提供一份我配置好的镜像文件(1.22G),导入实例化后可以直接连接桌面使用。

链接: https://pan.baidu.com/s/15wQcDdC8eLnBMq7u34jSYQ 提取码: 4hp8

先下载下来。

导入

docker import [ubuntu_20.04_xfce4_rdp.tar 下载保存路径] [导入后的镜像命名]:[镜像标签]
创建一个实例容器
docker run -itd -p 3389:3389 ubuntu_model:1.0 /bin/bash

进入容器

docker exec -it [NAME] /bin/bash

扩展补充

1.使用中可能会遇到一个问题,就是一段时间不操作会黑屏,造成无法操作,只能重启 docker 容器再次连接。

要防止这个问题,就要禁止锁屏。

打开菜单-设置-‘Light Locker Settings’

发表评论