阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

在 Docker 中运行 OpenOffice

117次阅读
没有评论

共计 3391 个字符,预计需要花费 9 分钟才能阅读完成。

Docker 与 GUI 应用

Docker 是开源的容器技术,容器是比虚拟机更轻量的虚拟化技术,优势是隔离软件的运行环境并且最小化其额外的开销。隔离运行环境的好处之一就是可以轻易创建干净的开发环境,而在我第一次 Docker 分享中,大家最关心的问题就是“Docker 可以运行 GUI 应用吗”。

Docker 作为虚拟化技术,并没有改变进程的运行方式和图像显示协议,因此 Docker 是可以运行 GUI 应用的。就像在裸机中要运行图形界面,我们有必要了解下 Linux 的 X Window 协议。在 Linux 中,一个 GUI 应用的显示都经过 X Window 这个 C / S 模型,简单概括就是 X Server 在后台运行,接受 X Client 的请求,并将显示的结果通过特定安全的协议返回。

运行 Docker GUI 应用的原理与之类似,下面将一步步带领大家创建基于 Docker 的图形化程序。

Dockerized OpenOffice

在 Docker 中运行 OpenOffice

Dockerized-openoffice 就是运行在容器内的 GUI 应用,执行命令 docker run -d -p 6080:6080 tobegit3hub/dockerized-openoffice 然后在浏览器打开 http://127.0.0.1:6080/vnc.html 就可以看到图形界面的 OpenOffice 应用。

其实玄机就在 Dockerfile 中,代码中有安装 apt-get install -y lxde x11vnc xvfb 这一步,就是安装我们前面提到的 X Server,这样通过特定的 VNC 客户端就可以访问这个 GUI 应用了。这里我们选择 noVNC 客户端来连接我们的 Dockerized 应用,导入 noVNC 源码,启动服务器,打开 6080 端口,这样我们 docker run 以后就可以通过浏览器来访问 GUI 应用了。

  1. FROM Ubuntu:14.04
  2. MAINTAINER DoroWu<fcwu.tw@gmail.com>
  3. ENV DEBIAN_FRONTEND noninteractive
  4. ENV HOME /root
  5. # setup our Ubuntu sources (ADD breaks caching)
  6. RUN echo "deb http://tw.archive.ubuntu.com/ubuntu/ trusty main\n\
  7. deb http://tw.archive.ubuntu.com/ubuntu/ trusty multiverse\n\
  8. deb http://tw.archive.ubuntu.com/ubuntu/ trusty universe\n\
  9. deb http://tw.archive.ubuntu.com/ubuntu/ trusty restricted\n\
  10. deb http://ppa.launchpad.net/chris-lea/node.js/ubuntu trusty main\n\
  11. ">/etc/apt/sources.list
  12. # no Upstart or DBus
  13. # https://github.com/dotcloud/docker/issues/1724#issuecomment-26294856
  14. RUN apt-mark hold initscripts udev plymouth mountall
  15. RUN dpkg-divert --local--rename --add /sbin/initctl && ln -sf /bin/true/sbin/initctl
  16. RUN apt-get update \
  17. && apt-get install -y --force-yes --no-install-recommends supervisor \
  18. openssh-server pwgen sudo vim-tiny \
  19. net-tools \
  20. lxde x11vnc xvfb \
  21. gtk2-engines-murrine ttf-ubuntu-font-family \
  22. nodejs \
  23. libreoffice firefox \
  24. && apt-get autoclean \
  25. && apt-get autoremove \
  26. && rm -rf /var/lib/apt/lists/*
  27. ADD noVNC /noVNC/
  28. ADD startup.sh /
  29. ADD supervisord.conf /
  30. EXPOSE 6080
  31. EXPOSE 5900
  32. EXPOSE 22
  33. WORKDIR /
  34. # Remove LibOffice
  35. RUN apt-get remove -y --purge libreoffice* libexttextcat-data* && sudo apt-get -y autoremove
  36. # Install wget
  37. RUN apt-get update -y && \
  38. apt-get install -y wget
  39. # Install OpenOffice
  40. RUN wget http://sourceforge.net/projects/openofficeorg.mirror/files/4.0.0/binaries/en-US/Apache_OpenOffice_4.0.0_Linux_x86-64_install-deb_en-US.tar.gz
  41. RUN tar -xvf Apache_OpenOffice*.tar.gz
  42. RUN dpkg -i en-US/DEBS/*.deb
  43. RUN dpkg -i en-US/DEBS/desktop-integration/*.deb
  44. ENTRYPOINT ["/startup.sh"]

实际上这里我们把整个 Linux 桌面管理器都装了,因此运行 Firefox 等一切应用都是可能的。

参考链接

  • https://github.com/fcwu/docker-ubuntu-vnc-desktop
    使用 VNC 和 noVNC 搭建 Ubuntu 环境的实例,无论是源码还是使用的技术都值得参考。
  • http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/
    在 Docker 运行 NetBeans 等开发环境,虽然使用价值不大但 Docker 就真的做到了。
  • http://stackoverflow.com/questions/16296753/can-you-run-gui-apps-in-a-docker-container
    运行 Firefox 而不需要安装 Firefox,整个 Dockerfile 也相当简单。
  • https://blog.docker.com/2013/07/docker-desktop-your-desktop-over-ssh-running-inside-of-a-docker-container/
    Docker 官方文档介绍通过 SSH 运行桌面系统,使用的是 Xpra。

CentOS 6/ 7 系列安装 Docker http://www.linuxidc.com/Linux/2014-07/104768.htm 

Docker 的搭建 Gitlab CI 全过程详解 http://www.linuxidc.com/Linux/2013-12/93537.htm 

Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm 

在 Docker 中使用 MySQL http://www.linuxidc.com/Linux/2014-01/95354.htm

在 Ubuntu Trusty 14.04 (LTS) (64-bit)安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm 

Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm 

Ubuntu 14.04 安装 Docker  http://www.linuxidc.com/linux/2014-08/105656.htm 

阿里云 CentOS 6.5 模板��安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm 

Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-04/116520.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计3391字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中