Docker:在从 Win10 安装到运行 ubuntu 的容器的目录中不允许进行 git 操作

Leo*_*Leo 2 linux windows git permissions docker

公司的PC是Win10,不能带自己的LP,我想在Linux上开发,所以我准备在Windows上安装一个docker并在上面运行一个Linux容器,我进行我的开发。

--- 背景---

Docker Desktop for Windows在 Win10 中安装了(19.03.8) 并拉取了一个 Ubuntu 映像。
我启动 Ubuntu 容器-v以将我的 win10 安装host_dir到容器的slave_dir.
host_dir之前安装已是一个git回购与.git目录host_dir
通过 ssh with root user,我slave_dir在容器中编辑文件,当我想提交更改时,出现以下错误:

root@5f8d7d02ee70:~/slave_dir# git status
fatal: failed to read object 36fa53e7ecb9d1daa454fc82f7bd7310afa335b7: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

我猜AuthorityWin10 和我的 Linux 容器之间的 git有问题

Linux 容器的 slave_dir:
在此处输入图片说明

Win10的host_dir:
在此处输入图片说明

而且我有一个类似的情况,在该博主说,你应该运行与--user泊坞窗,并且--user与你登录的主机上的PARAM应该是相同的

所以我尝试如下:

docker run -it --name test --user Leo -p 127.0.0.1:5001 -v host_dir:slave_dir image_name /bin/bash
Run Code Online (Sandbox Code Playgroud)

不幸的是,slave_dir 的uidgid仍然是root.

在 Win10 上使用 cygwin,我id用来查找我的登录用户的 uid 和 gid,
然后重试直接使用 uid/gid 运行 docker。

docker run -it --name test --user 4344296:1049089 -p 127.0.0.1:5001 -v host_dir:slave_dir image_name /bin/bash
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

OMG,还是不行!还是root!……
不知是我操作有误还是window的Docker-Desktop-For-Windows挂载时有一些用Authority的技巧。
谢谢大家!

Joã*_*rdo 5

看起来 Docker 2.2.0.4 有问题。可以在此链接中找到此问题的修复程序(它对我有用)。

TL;DR:从 Windows 中的 .git 文件夹中删除只读权限。