VNC (Virtual Network Compoting) là một hệ thống chia sẻ màn hình đồ họa nó bằng RFB (Remote Frame Buffer) để truy cập, điều khiển máy tính từ xa. Nó truyền được cả thông tin bàn phím, sự kiện bấm chuột từ máy local đến máy remote cùng với màn hình đồ họa từ máy remote về local.
Thường thì bạn có thể cài đặt VNC trên các Server CentOS, Ubuntu nếu muốn chạy các ứng dụng có GUI trên Server (nhiều bạn thích điều khiển server bằng các ứng dụng GUI). Bằng cách cài đặt Server VNC trên container ta có thể chạy các ứng dụng có GUI (Graphic User Interface) trong container. Sau đây ta sẽ thử cài đặt và chạy Firefox trong Docker.
Chạy ứng dụng GUI trong container Ubuntu với vnc4server
vnc4server
là một VNC Server, nó lắng nghe trên cổng 590X với X
là UID của user. Do ta sẽ chạy container với user root có UID =1 nên ta sẽ phải ánh xạ đến cổng 5901
.
Chạy ubuntu có mở cổng 5901
docker run -it -p 5901:5901 ubuntu
Cài đặt VNC Server
apt-get update -y apt-get install vnc4server -y
Thiết lập kích thước màn hình và biến môi trường DISPLAY
Thiết lập kích thước là 1200x1000
(tùy chọn)
vnc4server -geometry 1200x1000
Sau khi nhập lệnh, nó có yêu cầu thiết lập password để truy cập màn hình container. Bạn đặt theo password của bạn, cuối cùng nó có thông báo tên màn hình:
New '59f71f150245:1 ()' desktop is 59f71f150245:1
Có tên màn hình rồi, thiết lập nó cho biến môi trường DESTOP
export DISPLAY=59f71f150245:1
Như vậy là xong, giờ có thể thiết lập kết nối đến màn hình container với địa chỉ dạng vnc://ip:port
ví dụ vnc://127.0.0.1:5901
với password thiết lập ở trên.
Trình client để kết nối: Nếu máy của bạn là Windows, Linux cài TightVNC nếu macOS có sẵn Screen Sharing.
Cài firefox để chạy thử
apt-get install firefox -f
Sau đó gõ firefox
để chạy.
Giờ hãy thực hiện kết nối vào màn hành với địa chỉ vnc://127.0.0.1:5901
, bạn thấy firefox trên màn hình.