docker服务器的图形显示方案

本文介绍了一种在Docker服务器上实现图形界面的方法,通过XWINDOW系统将Docker服务器的图形输出重定向到远程终端,并提供了详细的配置步骤。

问题描述:一般docker实操时都是作为服务器,以字符方式交互,非常不方便。本人尝试各种图形解决方案,最终找到完美方案。

最初本人尝试过VNC和SSH方式,最终被否定了。1, 本来docker服务器是很小的,但下载了VNC  SSHD服务器和全套的窗口管理器后变得很大。2,在docker服务器中运行窗口管理器违背了作了服务器要求简单的初衷。3, 存在不完全兼容的问题,配置复杂。

后来想到LIUNX的X WINDOW系统本来就是C-S模式的,完全可以在服务器端执行程序的计算部分,将程序的显示部分放在图形终端上。以下只讲结果,不讲过程中的种种坑。(我是搞了好久才最终成功的,唉!!时间,我的时间啊!!)

 环境描述:

1,docker服务器为ubuntu14.4, 没有桌面环境------主机A   IP:172.17.0.2

2,图形终端ubuntu16.04,全套桌面环境--------------主机B   IP:172.17.0.1

概念描述:

主机A是服务器,但在X WINDOW模型中是X CLIENT。

主机B是远程终端,作为图形显示用,但在X WINDOW模型中是X SERVER。

操作如下:

1,主机A,root@6e1ce93e82b1:/# export DISPLAY=172.17.0.1:0.0       意思是图形输出重定向到主机B,缺省为DISPLAY=:0.0

2,主机B,sudo gedit /etc/lightdm/lightdm.conf      增加一行    xserver-allow-tcp=true

3,主机B,sudo systemctl restart lightdm               

4,主机B,netstat|grep tcp    应有如下类似的一行 “ tcp        0      0 172.17.0.1:x11          172.17.0.2:49672        ESTABLISHED”

5,主机B,  xhost  +                注意加号前应有空格

6,主机A,root@6e1ce93e82b1:/# xclock                       此时在主机B上可以看到一个在运行中的时钟图形

至此完成!


最近使用上述方法不行了,可能是因为直接TCP传输存在安全隐患,所以必须通过加密方式传输,比如SSH等,下面直接上代码(命令):

  1. docker run -it ubuntu /bin/bash  (下面命令在此容器中执行)
  2. apt update
  3. apt install x11-apps nano ssh
  4. nano /etc/ssh/sshd_config   (修改下面三处)
    1. PermitRootLogin yes
    2. X11Forwarding yes
    3. X11UseLocalhost no
  5. service ssh start
  6. passwd   
  7.  下面命令在x server中运行
  8. xhost +
  9. ssh -X root@172.17.0.2
  10. 下面命令在ssh中运行
  11. xclock

### 推荐 Docker 中使用的 PostgreSQL 图形化管理工具 对于在 Docker 容器中运行的 PostgreSQL 数据库,可以使用多种图形化管理工具来管理和操作数据。以下是几种推荐的工具: #### pgAdmin 4 pgAdmin 是目前最流行的 PostgreSQL 开源图形化管理工具之一[^1]。它支持广泛的 PostgreSQL 功能,并提供了友好的用户界面,适合不同技术水平的用户。通过 Docker 部署 pgAdmin 可以轻松实现与容器化的 PostgreSQL 实例连接。 要部署 pgAdmin 到 Docker 并使其能够访问 PostgreSQL 数据库实例,可以通过以下 `docker run` 命令完成: ```bash docker run \ --name pgadmin-container \ -p 5050:80 \ -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \ -e 'PGADMIN_DEFAULT_PASSWORD=yourpassword' \ -d dpage/pgadmin4 ``` 上述命令会启动一个名为 `pgadmin-container` 的容器,并将其绑定到主机的端口 `5050` 上。默认登录邮箱和密码分别设置为 `user@domain.com` 和 `yourpassword`。 #### DBeaver Community Edition DBeaver 是另一个功能强大的数据库管理工具,支持包括 PostgreSQL 在内的众多数据库管理系统。虽然其本身不是专门为 Docker 设计的,但它可以在任何平台上安装并配置为远程连接至 Dockerized PostgreSQL 实例[^2]。 如果倾向于更轻量级的选择或者希望避免额外的服务器开销,则可以直接下载客户端版本,在本地机器上执行而无需依赖于其他虚拟环境。 #### Adminer Adminer 提供了一个简单易用且文件体积较小的单页面 PHP 应用程序作为替代方案。尽管它的设计初衷并非专门针对复杂场景下的大规模生产用途,但对于快速查看表结构以及执行基本查询来说已经绰绰有余了。同样也可以利用官方镜像方便快捷地集成进入现有的 CI/CD 流程当中去。 启动方法如下所示: ```bash docker run --rm -it -p 8080:8080 adminer ``` 这将会把 Adminer 映射到本机上的 8080 端口中,从而允许您通过浏览器访问 http://localhost:8080 来管理您的 PostgreSQL 数据库服务。 --- ### 总结 以上提到的所有选项都可以很好地满足对 Docker 内部 PostgreSQL 进行可视化控制的需求。具体选择取决于个人偏好和技术需求等因素考虑之后再做决定即可。
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值