我试图用docker运行一个简单的命令,读取我的主目录中的文件,并在本地机器上的同一目录中写入输出文件(/home/userxyz/projects/data)。“数据”文件夹属于我(
userxyz)和具有R/W权限的同名组(
userxyz)。
我用这样的Dockerfile构建了一个图像(下面介绍如何将用户添加到Docker容器?):
FROM osgeo/gdal:alpine-small-latest
RUN mkdir /usr/tmp
RUN addgroup -S userxyz \
&& adduser -S -D -h /usr/tmp userxyz userxyz \
&& chown -R userxyz:userxyz /usr/tmp
USER userxyz
WORKDIR /usr/tmp
以及:
docker build -t userxyz/test .
我运行docker时使用了:
docker run --rm -v /home/userxyz/projects/data:/usr/tmp userxyz/test gdal_translate -ot UInt32 /usr/tmp/input.tif /usr/tmp/output.tif
然而,我仍然得到:
ERROR 4: Attempt to create new tiff file `/usr/tmp/output.tif' failed: Permission denied
当我只读取文件时,它可以工作:
docker run --rm -v /home/userxyz/projects/data:/usr/tmp userxyz/test gdalinfo /usr/tmp/input.tif
知道写入权限有什么问题吗?
编辑:当打开数据文件夹为“其他人”读/写时,文件是由用户正确创建的,所以我猜是用户名属性?如何才能使文件由用户xyz创建,而不是由用户500100创建?
您必须根据组ID而不是组名在组中添加用户。用户名和组名在容器中是隔离的,因此无法工作。
您可以在主机上使用以下命令在文件中找到组ID:
cat /etc/group | grep userxyz
找到后,您将用户添加到Dockerfile中的组:
FROM osgeo/gdal:alpine-small-latest
RUN mkdir /usr/tmp
RUN groupadd -g $GID userxyz \
&& adduser -S -D -h /usr/tmp userxyz userxyz \
&& chown -R userxyz:userxyz /usr/tmp
USER userxyz
WORKDIR /usr/tmp
其中,用组ID替换$GID。
虽然你设置了同一个用户
因此,仅复制用户名是不够的,还需要复制UID、GID,例如next:
Dockerfile:
FROM ubuntu:16.04
ARG UID
ARG GID
RUN groupadd -g $GID userxyz
RUN useradd -m -u $UID -g $GID -s /bin/bash userxyz
生成命令:
docker build -t abc:1 --build-arg UID=`id userxyz -u` --build-arg GID=`id userxyz -g` .
解释:
id userxyz-u
同时运行docker的服务 YML文件: DockerFile: 来自rabbitmq:3-management-alpine 抄袭/配置/ampq/devhost 我使用了这个命令:docker-compose-fdocker-compose.yml--build ampq 请帮我解决这个问题
我试图在android中写入文件,但一直出现以下错误: java.io.FileNotFoundException: /storage/emulated/0/Notes/TestFile.txt(权限拒绝) 搜索此网站可以简单地解决此问题,即向应用程序清单文件添加WRITE\u EXTERNAL\u存储,但这对我不起作用。我一直在犯同样的错误。
Docker安装在AWS EC2 Ubuntu 16.04实例上,如下所示: 引发权限被拒绝错误: 尝试连接到处的Docker守护程序套接字时,权限被拒绝unix:///var/run/docker.sock: 收到http:///var/run/docker.sock/v1.39/info: 拨号unix/var/run/docker.sock:connect:权限被拒绝 显示: uname-a
我试图在PHP中运行exec()函数,但是我得到了一个'Permission Denied'输出。PHP是作为Docker容器安装的。我在Raspberry PI和我的MacBook上都得到了这个。 作为一个测试,我在没有Docker的情况下安装了LAMP,它工作得很好,但在Docker上就不行了。 例如,当我运行 我在浏览器中的PHP脚本中获得以下信息: 而且运行exec()函数还是像shell
问题内容: 我正在尝试使用Python在Windows OS上创建并写入一个临时文件。我已经使用Python模块创建了一个临时文件。 但是当我去写那个临时文件的时候我得到了一个错误。我不可以写临时文件吗?难道我做错了什么?如果要创建并写入临时文件,应该如何在Python中进行操作?为了安全起见,我想在temp目录中创建一个临时文件,而不是在本地(在.exe正在执行的目录中)中创建一个临时文件。 问
我正在尝试使用相机并保存图像。按照Commonware建议的步骤进行操作。我经常出错- 2018-11-12 02:10:54.588 3145-3173/inder.execE/Database aseUtils:写入异常到包裹inder.java:682安全异常:权限拒绝:写入android.support.v4.content.FileProvider uricontent://com.bi