docker中支持GUI(界面)

1,008 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

为什么需要?

在尝试Mac系统vcpkg中安装qt5失败之后,考虑到用docker安装Ubuntu,能不能在docker中运行GUI程序呢?

没有做不到,只有想不到。

如何实现?

GitHub - fcwu/docker-ubuntu-vnc-desktop: A Docker image to provide web VNC interface to access Ubuntu LXDE/LxQT desktop environment.

sudo docker run --name ubvnc -p 6080:80 -p 5900:5900 dorowu/ubuntu-desktop-lxde-vnc:bionic visit: http://127.0.0.1:6080/#/ which runs a noVNC more limited JavaScript VNC client

run:

sudo apt-get install tigervnc-viewer xtigervncviewer :5900

改进

还是docker-compose.yml方便

version: '3.3' services: ubuntu-desktop-lxde-vnc: container_name: ubvnc ports: - '6080:80' - '5901:5900' - '8888-8898:8888-8898' volumes: - './:/root' - '/dev/shm:/dev/shm' environment: - HTTP_PASSWORD=password - VNC_PASSWORD=password - RESOLUTION=1600x900 image: 'dorowu/ubuntu-desktop-lxde-vnc:bionic' docker-compose up -d

结果1 浏览器访问

image.png

结果2 vnc viewer访问(推荐)

Screen Shot 2022-04-25 at 22.20.35.png

Screen Shot 2022-04-25 at 22.31.06.png

应用:运行GUI程序

build-system.fman.io/pyqt5-tutor…

Test1

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
app = QApplication([])
window = QWidget()
layout = QVBoxLayout()
layout.addWidget(QPushButton('Top'))
layout.addWidget(QPushButton('Bottom'))
window.setLayout(layout)
window.show()
app.exec()

Test1 结果

Screen Shot 2022-04-25 at 22.40.37.png

Test2 Custom colors

from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPalette
from PyQt5.QtWidgets import QApplication, QPushButton

app = QApplication([])
app.setStyle('Fusion')
palette = QPalette()
palette.setColor(QPalette.ButtonText, Qt.red)
app.setPalette(palette)
button = QPushButton('Hello World')
button.show()

Screen Shot 2022-04-25 at 22.55.43.png