docker - 在 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 容器中,我想你也应该了解什么时候$USER
解决。当您在 shell 中运行此命令时:
docker exec -it --user my-user my-container echo $USER
在调用可执行文件之前,该字符串$USER
被替换为。(我假设你以 as 运行它,否则我不知道它来自哪里。)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
. 不幸的是,该用户在您在容器中创建之前不会存在,因此它没有名称。另一个人已经在这个问题中发布了一个链接来解决这个问题。
推荐阅读
- c# - 如何使用 Entity Framework 在 SQL Azure 中平均 DateTime 值?
- forecasting - TSLM 和固定数据
- continuous-delivery - 在 Continuum 中,如何计算风险和高风险文件并将其包含在“风险”指标中?
- excel - 将名称和日期添加到新选项卡
- c# - 从我的服务器下载 zip 文件时遇到问题
- amazon-web-services - 等效于 Hive 横向视图外部爆炸在 Athena (Presto) CROSS JOIN UNNEST
- flow-project - 我可以使用 traCI 来控制 FLOW 创建的交通信号吗?
- c# - 测试项目找不到项目依赖项
- python - python flask mysql 只使用一个连接
- excel - Excel - 高级过滤器:过滤大于今天的值