![](/img/trans.png)
[英]Is there any way to get the EC2 instance ip from docker container?
[英]Is there any way to run “pkexec” from a docker container?
我正在嘗試使用舊版本的Firefox和舊版本的Java設置Docker鏡像(我的Dockerfile在這里可用,對不起法語自述文件: https ://framagit.org/Gwendal/firefox-icedtea-docker)運行舊的Java小程序以啟動VPN。 我的圖像確實有效,並且成功地允許我在Firefox中啟動Java applet。
不幸的是,所述applet然后嘗試在容器中運行以下命令(我只是從命令中刪除了--config
部分,因為這里沒關系):
INFO: launching '/usr/bin/pkexec sh -c /usr/sbin/openvpn --config ...'
然后applet以一個錯誤靜默退出。 在調查的時候,我嘗試用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
無法在pkexec
容器中工作嗎? 或者有什么方法可以使這個命令工作?
旁注 :我對我嘗試運行的Java小程序無法控制,它是一個可怕的,非常過時的專有黑盒子,我應該在工作中使用,我無法訪問源代碼,而且我必須按原樣使用。
我已經通過在pkexec
中用sudo
替換pkexec
並允許無密碼sudo解決了我自己的問題。
給定一個ubuntu docker鏡像,其中創建了一個名為developer
的用戶並使用USER
語句進行配置,添加以下行:
# Install sudo and make 'developer' a passwordless sudoer
RUN apt-get install sudo
ADD ./developersudo /etc/sudoers.d/developersudo
# Replacing pkexec by sudo
RUN rm /usr/bin/pkexec
RUN ln -s /usr/bin/sudo /usr/bin/pkexec
與文件developersudo
包含:
developer ALL=(ALL) NOPASSWD:ALL
這取代了在容器中運行的進程中對pkexec
任何調用,通過調用sudo
而沒有任何密碼提示,這很好地工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.