ubuntu使用VNC运行基于docker的桌面系统

ubuntu使用VNC运行基于docker的桌面系统

我自己创建的docker image docker pull floodshao/ros-melodic-desktop-vnc:v1.0

基于lxde的一个ubuntu桌面系统

  1. docker下载地址:docker pull dorowu/ubuntu-desktop-lxde-vnc
  2. docker运行docker run -it --rm -p 8080:80 dorowu/ubuntu-desktop-lxde-vnc
    其中 [镜像名/tag]
  3. 运行成功后,在浏览器中实现vnc,打开http://localhost:8080, 浏览器中会出现ubuntu桌面版,但不是传统的运行在pc上的ubuntu18.04。(在浏览器中使用桌面版,快捷键基本不能使用)
  4. 在该运行容器上使用命令行工具docker exec -it [container_id] /bin/bash

命令选项:
-i 交互式操作
-t 终端

VNC服务器

VNC(Virtual Network Concols)是虚拟网络控制台的缩写。是在基于UNIX和LINNUX操作系统的免费开源软件。

https://www.jianshu.com/p/f58fe5cdeb5f

ubuntu 18.04 自带桌面共享,可以将物理桌面共享给vnc,但是无法创建新的桌面。上边链接的博主证实原生的gnome桌面基本带不动vnc,所以使用其他桌面。

所以上述docker file中使用了lxde桌面,lightweight x11 desktop environment。该桌面可以再linux,bsd等posix兼容平台运行。lxde重视实用性和轻巧性,并尽量降低所消耗的系统资源。

在Dockerfile目录下创建。
docker build -t [image_name:tag_name] . 这里.代表当前目录

基于xfce的ubuntu桌面系统(推荐)

https://www.jianshu.com/p/38a60776b28a

找到了一个比较稳定且轻量的ubuntu-xfce镜像文件。
https://hub.docker.com/r/consol/ubuntu-xfce-vnc/
这个镜像文件是基于ubuntu16.04的,将其改变成18.04:

  1. 修改dockerfile中的FROM语句到ubuntu18.04
  2. 从其github repo https://www.github.com/ConSol/docker-headless-vnc-container 中下载相关命令源码。
  3. /src folder拷贝到Dockerfile同级目录下(Dockerfile所在的目录为docker build的根目录,在ADD命令中,不能使用根目录上层的路径)
  4. 进行编译docker build -t local/ubuntu_1804 .
  5. 运行docker,注意以下命令并不是进入root用户权限。(用户为default)
    docker run -d -p 5901:5901 -p 6901:6901 local/ubuntu_1804
    修改default user和group
    docker run -d -p 5901:5901 -p 6901:6901 --user $(id -u):$(id -g) consol/centos-xfce-vnc

    docker run -it -p 5901:5901 -p 6901:6901 local/ubuntu_1804 bash
  6. 在vnc客户端链接localhost:5901 密码是vncpassword.