Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Docker中传递用户凭据_Docker - Fatal编程技术网

在Docker中传递用户凭据

在Docker中传递用户凭据,docker,Docker,使用Docker应用程序,我希望将应用程序作为守护程序运行: docker run -v $(pwd)/:/src -dit --name DOCKER_NAME my-app 然后从安装的驱动器执行Python脚本: docker exec -w /src DOCKER_NAME python my_script.py 这个Python脚本生成了一些文件和图形,我以后会用到这些文件和图形。但是,我有一个问题,Docker应用程序中生成的文件与我的外部环境具有不同的权限 [2D] drwxr

使用Docker应用程序,我希望将应用程序作为守护程序运行:

docker run -v $(pwd)/:/src -dit --name DOCKER_NAME my-app
然后从安装的驱动器执行Python脚本:

docker exec -w /src DOCKER_NAME python my_script.py
这个Python脚本生成了一些文件和图形,我以后会用到这些文件和图形。但是,我有一个问题,Docker应用程序中生成的文件与我的外部环境具有不同的权限

[2D] drwxrwxr-x  5 jenkins_slave jenkins_slave    4096 Mar 21 10:47 .
[2D] drwxrwxr-x 24 jenkins_slave jenkins_slave    4096 Mar 21 10:46 ..
[2D] drwxrwxr-x  2 jenkins_slave jenkins_slave    4096 Mar 21 10:46 my_script.py
[2D] -rw-r--r--  1 root          root           268607 Mar 21 10:46 spaider_2d_0_000.png
[2D] -rw-r--r--  1 root          root           271945 Mar 21 10:46 spaider_2d_0_001.png
[2D] -rw-r--r--  1 root          root           283299 Mar 21 10:46 spaider_2d_0_010.png
在上面的示例中,后3个文件是从Docker mount中生成的

我是否可以以任何方式指定Docker应用程序应使用与外部环境相同的凭据运行,和/或生成的文件应具有某些权限?

使用Docker的-u/-user指令设置要运行容器的用户和组

例如,如果我希望不是通过root而是通过我自己运行容器,我可以执行以下操作:

user=$(id -u)
group=$(cut -d: -f3 < <(getent group $(whoami)))

docker run -it -u "$user:$group" <CONTAINER_NAME> <COMMAND>
是的,用户名是未知的,但我想你不会为此烦恼。您这样做是为了设置正确的权限,而不是为了获得一个显示良好的名称,对吗

请注意,此处的文档:

$ whoami
whoami: unknown uid 1000