xpra和sudo / sudo和“成为用户”之间有什么区别

时间:2018-07-02 11:30:32

标签: docker sudo

我正在尝试创建一个带有xprachrome的docker镜像。由于我还需要能够使用此基本映像来安装其他软件,因此我不会在Dockerfile末尾更改用户。

在构建期间,我将此图像用于两个目的: -建立最终形象 -使用基本映像运行xprachrome进行构建

第一次,您需要是root用户,第二次,您需要成为chrome用户。我试图通过使用sudo来解决此问题:(例如sudo -i -u chrome xpra ...,但这会引起问题。如果我将基本映像更改为chrome用户(在Dockerfile中为USER CHROME),则可以正常工作。

我得到的完整错误:

2018-07-02 11:23:39,828 Error: cannot start the desktop server
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/xpra/scripts/server.py", line 1011, in run_server
    app.setup()
  File "/usr/lib/python2.7/dist-packages/xpra/server/server_base.py", line 119, in setup
    c.setup(self)
  File "/usr/lib/python2.7/dist-packages/xpra/server/mixins/audio_server.py", line 55, in setup
    self.init_pulseaudio()
  File "/usr/lib/python2.7/dist-packages/xpra/server/mixins/audio_server.py", line 117, in init_pulseaudio
    os.mkdir(self.pulseaudio_private_dir, 0o700)
OSError: [Errno 2] No such file or directory: '/run/user/1000/xpra/pulse-:0'
2018-07-02 11:23:39,828 [Errno 2] No such file or directory: '/run/user/1000/xpra/pulse-:0'

两个图像中都不存在/run/user目录。

1 个答案:

答案 0 :(得分:1)

我最终解决了这个问题,并且知道为什么我首先忘记了(我只能处理这个真正零碎的东西。Docker文件包含:ENV XDG_RUNTIME_DIR=/tmp

基本上重定向了运行时目录,但是sudo实际上删除了该环境变量。