在Docker容器中以特定用户身份执行命令

时间:2018-08-16 18:53:49

标签: docker

在docker中创建容器后

docker run -it -d --name my-container my-image

我想以特定用户身份执行命令(根据docker exec

docker exec -it --user my-user my-container echo $USER

但这会输出root

如何在Docker容器中以特定用户的身份执行命令?

2 个答案:

答案 0 :(得分:0)

查看此stackoverflow post。如果要在运行时使用它,则需要在docker映像中创建用户

答案 1 :(得分:0)

除了用户是否存在于docker容器之外,我想你也应该明白$USER是什么时候解析的。当您在 shell 中运行此命令时:

docker exec -it --user my-user my-container echo $USER

在调用 $USER 可执行文件之前,字符串 root 被替换为 docker。 (我假设您将它作为 root 运行,否则我不知道它来自哪里。)

要避免这种情况,您必须像这样转义 $

docker exec -it --user my-user my-container echo \$USER

当我对此进行测试时,容器内的外壳不知道 $USER 的值。如果你想看到容器内运行的用户确实是你的用户,试试这个:

docker exec -it --rm --user my-user my-container /bin/id -u

这将打印 my-user 的用户 ID。不幸的是,除非您在容器中创建该用户,否则该用户将不存在,因此它没有名称。另一个人已经在这个问题中发布了一个链接来解决这个问题。