我正在尝试使用旧版本的 Firefox 和旧版本的 Java设置 Docker 映像(我的 Dockerfile 可在此处获得,抱歉法语自述文件: https ://framagit.org/Gwendal/firefox-icedtea-docker)运行旧的 Java 小程序来启动 VPN。我的图像确实有效,并且成功地允许我在 Firefox 中启动 Java 小程序。
不幸的是,所述小程序然后尝试在容器中运行以下命令(我只是--config
从命令中删除了该部分,因为它在这里无关紧要):
INFO: launching '/usr/bin/pkexec sh -c /usr/sbin/openvpn --config ...'
然后小程序以错误方式静默退出。在调查时,我尝试使用pkexec
相同的 Docker 映像运行命令,它给了我这个结果:
$ sudo docker-compose run firefox pkexec /firefox/firefox-sdk/bin/firefox-bin -new-instance
**
ERROR:pkexec.c:719:main: assertion failed: (polkit_unix_process_get_start_time (POLKIT_UNIX_PROCESS (subject)) > 0)
但我根本不知道 polkit,也无法理解这个错误。
编辑:重现问题的一种更简单的方法是使用这个 Dockerfile:
FROM ubuntu:16.04
RUN apt-get update \
&& apt-get install -y policykit-1
然后运行:
$ sudo docker build -t pkexec-test .
$ sudo docker run pkexec-test pkexec echo Hello
这再次导致:
ERROR:pkexec.c:719:main: assertion failed: (polkit_unix_process_get_start_time (POLKIT_UNIX_PROCESS (subject)) > 0)
我应该得出结论,pkexec
不能在 docker 容器中工作吗?或者有什么方法可以使这个命令起作用?
旁注:我无法控制我尝试运行的 Java 小程序,它是一个可怕且非常过时的专有黑匣子,我应该在工作中使用它,我无法访问源代码,而且我必须按原样使用。