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

在docker容器中以特定用户身份执行命令,docker,Docker,在docker中创建容器后 docker run -it -d --name my-container my-image 我想作为特定用户执行命令(根据) 但这会输出root 如何在docker容器中以特定用户的身份执行命令?看看这个。如果要在运行时使用docker映像,则需要在docker映像中创建用户除了用户是否存在于docker容器中之外,我认为您还应该了解何时解析$user。在shell中运行此命令时: docker exec -it --user my-user my-contain

在docker中创建容器后

docker run -it -d --name my-container my-image
我想作为特定用户执行命令(根据)

但这会输出
root


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

看看这个。如果要在运行时使用docker映像,则需要在docker映像中创建用户

除了用户是否存在于docker容器中之外,我认为您还应该了解何时解析
$user
。在shell中运行此命令时:

docker exec -it --user my-user my-container echo $USER
在调用
docker
可执行文件之前,字符串
$USER
被替换为
root
。(我假设您以
root
的身份运行它,否则我不知道它来自哪里。)

要避免这种情况,您必须跳出
$
,如下所示:

docker exec -it --user my-user my-container echo \$USER
当我对此进行测试时,容器中的shell不知道
$USER
的值。如果希望看到容器内运行的用户确实是您的用户,请尝试以下操作:

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

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

我的图像已经有了用户,我可以通过
docker exec-it--user My user My container bin/bash
My user
启动一个bash shell。这将以用户身份进入bash
my user
docker exec -it --rm --user my-user my-container /bin/id -u