栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Docker容器的SSH X11转发的替代方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker容器的SSH X11转发的替代方法

有一种从Docker容器获取图形输出的好方法,并且无需

sshd
在容器内运行守护程序。当运行单个进程(本来应该是这样)时,Docker可以提供裸机性能
R
。运行sshd守护程序可能会带来一些额外的开销,尽管可能很小。通过将sshd守护程序作为supervisor守护程序的子进程运行,这并没有得到改善。当一个人充分利用绑定安装时,两者都可以省去。在构建了应该从中运行容器的映像之后,我们启动一个交互式容器并将该
/tmp/.X11-unix
文件夹绑定安装
到其中。我将陈述完整的命令并详细解释它的作用:

泊坞窗运行-i -t –rm

  • -i
    建立一个交互式会话;
    -t
    分配一个伪tty;
    --rm
    使这个容器短暂

-e DISPLAY = $ DISPLAY

  • 将主机显示设置为本地计算机显示(通常为
    :0

-u泊坞窗

  • -u
    指定该进程应由用户(在此处
    docker
    )而不是root运行。此步骤很重要(vi)!

-v /tmp/.X11-unix:/tmp/.X11-unix:ro

  • -v
    bind 将本地计算机上的
    X11
    套接字安装
    /tmp/.X11-unix
    /tmp/.X11-unix
    容器中,
    :ro
    并使该套接字为只读。

--name =“ rdev” ubuntu-r R

  • --name=""
    specify the name of the container (here
    rdev
    ); the image you want to run the container from (here
    ubuntu-r
    ); the process you want to run in the container (here
    R
    ). (The last step of specifying a process is only necessary if you have not set a default
    CMD
    or
    ENTRYPOINT
    for your image.)

发出此命令后,您应该查看漂亮的

R

启动输出。如果要尝试
demo(graphics)
查看图形输出是否已经在工作,您会注意到它不是。那是因为
Xsecurity
扩展名阻止您访问套接字。现在,您可以
xhost+
在本地计算机上键入内容,然后
demo(graphics)
再次尝试使用您的容器。您现在应该具有图形输出。但是,强烈建议不要使用此方法,因为您允许访问当前连接到的任何远程主机的xsocket。只要您仅与单用户系统进行交互,这在某种程度上是合理的,但是一旦涉及多个用户,这绝对是不安全的!因此,您应该使用一种不太危险的方法。一个好的方法是使用服务器解释

xhost +si:localuser:username

可以用来指定一个本地用户(请参阅参考资料

man xhost
)。这意味着
username
应该是在
X11
本地计算机上运行服务器并运行docker容器的用户的名称。这也是为什么在运行容器时指定用户很重要的原因。最后但并非最不重要的一点是,总是存在使用
xauth
.Xauthority
文件授予对
X11
套接字的访问权限的更复杂的解决方案(请参阅参考资料
manxauth
)。但是,这还将涉及更多的知识
X

这可以产生积极的影响,这是为了实现所需的过程而需要运行的过程数量。

(1)

supervisor
sshd
在所述容器中运行:

UID      PID      PPID     C     STIME    TTY      TIME     CMDroot     4564     718      1     18:16    ?        00:00:00 /usr/bin/python /usr/bin/supervisordroot     4576     4564     0     18:16    ?        00:00:00 /usr/sbin/sshd

通过

ssh
运行登录时
R

UID      PID      PPID     C      STIME    TTY      TIME     CMDroot     4564     718      0      18:16    ?        00:00:00 /usr/bin/python /usr/bin/supervisordroot     4576     4564     0      18:16    ?        00:00:00 /usr/sbin/sshdroot     4674     4576     0      18:17    ?        00:00:00 sshd: docker [priv]   chb      4725     4674     0      18:18    ?        00:00:00 sshd: docker@pts/0chb      4728     4725     1      18:18    pts/0    00:00:00 -bash

(2)使用bind mount方法:

UID      PID      PPID     C      STIME    TTY      TIME     CMDchb      4356     718      0      18:12    pts/4    00:00:00 /usr/local/lib/R/bin/exec/R --no-save --no-restore


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/418904.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号