首页 > 解决方案 > 在 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 容器中以特定用户身份执行命令?

标签: docker

解决方案


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

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

在调用可执行文件之前,该字符串$USER被替换为。(我假设你以 as 运行它,否则我不知道它来自哪里。)rootdockerroot

为避免这种情况,您必须$像这样逃避 :

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. 不幸的是,该用户在您在容器中创建之前不会存在,因此它没有名称。另一个人已经在这个问题中发布了一个链接来解决这个问题。


推荐阅读