Docker容器卷未按预期工作
实际上,我正在尝试运行下面的命令Docker容器卷未按预期工作,docker,Docker,实际上,我正在尝试运行下面的命令 docker run -it --rm -v $(pwd):/var/www/html --user node node:12.13.1-alpine ash. 预期结果 容器内的文件(即/var/www/html)应具有用户身份节点 实际结果 但是,容器中的文件显示的用户与主机的用户相同。 此外,无法在容器内创建目录 它为我的其他同事工作。因此,在此方面的任何帮助都将不胜感激 非常感谢,, 阿尔文 注意: Docker版本19.03.7,版本7141c19
docker run -it --rm -v $(pwd):/var/www/html --user node node:12.13.1-alpine ash.
预期结果
容器内的文件(即/var/www/html
)应具有用户身份节点
实际结果
但是,容器中的文件显示的用户与主机的用户相同。
此外,无法在容器内创建目录
它为我的其他同事工作。因此,在此方面的任何帮助都将不胜感激
非常感谢,,
阿尔文
注意:
- Docker版本19.03.7,版本7141c199a2
- 已向docker命令添加了必要的权限,以便它不会 运行它需要sudo
/var/www/html
的原始权限和所有者保持不变。通过ls-n
验证这一点,并查看文件夹所有者的UID在装入Docker时是否相同。确保UID与指定的节点
用户相同
我不知道它在你同事的电脑里是怎么工作的。这就是为什么使用UID/GID而不是仅仅使用用户名很重要的原因。容器中的同一用户名可以在主机中具有相同用户名的不同UID
编辑:我检查了您使用的节点图像包含uid1000的
node
user。在Linux中创建的第一个用户通常也有UID1000。因此,如果uid1000拥有/var/www/html
,它将运行。但是UID1000在Docker和主机中可能属于不同的用户名。因为您指定了--user node
,当usernamenode
本身存在时,该节点在容器中被转换为UID 1000,所以如果主机中的不同UID拥有/var/www/html
,则它将不起作用,这可能就是您的情况。在构建之前,您必须将用户添加到Dockerfile中
# App is running normal user mode
USER node
现在,当您运行docker image时,它将以正常节点用户模式运行