Docker 圖形界面

大部份使用 Docker 的時候都僅有終端界面,只能透過指令來操作,但是本人好吃懶做,希望有美美的圖形界面可以使用,因此做了一些功課,發現其實有幾種方式可以讓 Docker 容器運行時具有圖形界面!

參考資料:
[Fabio Rehm's Blog]Running GUI apps with Docker
Docker這樣學才有趣:從入門,到玩直播、挖礦

Firefox+X11

第一種方式是將 Linux 自身的 X11 分享給 Docker 容器使用,就這麼簡單一句話而已,直接來實作,這裡用 Firefox 瀏覽器作為範例。

Dockerfile
FROM ubuntu:18.04

RUN apt-get update && apt-get install -y firefox

RUN useradd -ms /bin/bash developer

USER developer
ENV HOME /home/developer


CMD /usr/bin/firefox

接著編譯 Docker 映像檔,然後啟動容器,指令如下所示。
$ docker build -t firefox .
$ docker run -ti --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix firefox

若一切順利,就會看到一個貨真價實的 Firefox 被啟動,差別只在於它存在 Docker 容器裡。有沒有覺得很有趣阿!

Ubuntu+VNC

這方法是從「Docker這樣學才有趣 」這本書裡看到的,有興趣的可以去買一本來看。其實原理很簡單,就是安裝一個輕量的桌面環境和一個可以分享螢幕畫面並且遠端操作的軟體,再透過 CMD 指令讓 Docker 容器啟動時執行 VNC Server,啟動之後就可以使用遠端桌面連線工具,連線至具有 GUI 界面的容器囉!

Dockerfile
FROM ubuntu:14.04

RUN apt-get update && \
  DEBIAN_FRONTEND=noninteractive apt-get install -y lxde-core lxterminal tightvncserver

WORKDIR /data
EXPOSE 5901

CMD vncserver :1 -geometry 1280x720 -depth 24 && tail -F /root/.vnc/*.log

接著編譯 Docker 映像檔,然後啟動容器,指令如下所示。
$ docker build -t ubuntu-gui .
$ docker run -it -p 5901:5901 -e USER=root ubuntu-gui

啟動容器之後會先看到這樣的畫面,首次登入需要設定密碼。

上述完成之後,再開啟遠端連線工具 > 設定連線方式和連線目標 > 輸入稍早設定的密碼然後進入容器。連線之後就可以看到精美的 GUI 界面囉!

後續還有很多可以改善,泰勞在此僅簡單介紹一下。

題外話,讓 Docker 容器具有圖形界面應該有助於推廣這樣的工具,公司內部一直在推廣大家使用 Docker 來編譯軟體,使用教學、指令都提供給各位了,有興趣使用的人還真的非常少......可能大家都習慣圖形界面了吧!

留言

這個網誌中的熱門文章

程式語言常用之符號與詞彙 - 中英文對照

Repo 實用指令

什麼是 Bootloader?