拉取镜像,创建容器(其中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连接