0

我想在 docker 容器中以 root 身份执行 perl 脚本(主机上的 SUDO),并在 perl 脚本中获取真实的用户 ID。

例如,下面的执行应该使 myscript.pl 能够获取真实的 userId(在这种情况下为 mat),而不必将其作为附加参数显式传递给 myscript.pl..(从主机调用时容器内的脚本应该找到调用脚本的真实用户)

[mat@dev01-nrg02 ~]$ sudo docker exec -it MY_API_LAYER myscript.pl 

排除在容器启动期间设置为 docker 环境变量,因为

  1. 该脚本将由任何用户执行,我需要获取该用户的真实 ID。
  2. docker 容器是使用 Init 服务启动的……所以从技术上讲,这意味着也不可能设置任何用户详细信息……

还..

我不想让脚本的用户通过他们的 userId 来打扰他们(这可能看起来是多余的,如果提供了这样的选项,他们也可以传递任何 Id..)

请让我知道是否有人遇到过这样的问题并解决了?

4

1 回答 1

0

你找不到这个。

Docker 容器与调用用户完全隔离。在调用的情况下docker exec更是如此:在某个时间点,某个主机用户调用了根 Docker 守护程序来启动一个容器,然后在稍后某个时间点,某个其他主机用户正在调用根 Docker 守护程序以容器内的其他用户身份运行进程。

如果您需要用户以他们自己的 ID 在他们自己的文件上运行脚本,那么安装所需的依赖项将更加容易,这样他们就可以自己运行脚本,而无需sudoordocker

$ myscript.pl
于 2020-02-29T02:29:25.010 回答