Docker挂载的卷文件属于nobody:nobody(失去所有者)



将。ssh文件夹挂载到docker容器中

主机权限(ls -laHF):

total 40K
drwxr-xr-x 2 git git 4.0K Apr  7 21:27 ./
drwxr-xr-x 3 git git 4.0K Apr  7 21:20 ../
-rw------- 1 git git 2.7K Apr  7 21:27 authorized_keys
-rw------- 1 git git 2.6K Dec 11 15:34 authorized_keys_1675190689.gitea_bak
-rw------- 1 git git   25 Dec 11 14:02 environment
-rw------- 1 git git  411 Apr  7 21:25 id_ed25519
-rw-r--r-- 1 git git   96 Apr  7 21:25 id_ed25519.pub
-rw------- 1 git git 3.4K Dec 11 14:16 id_rsa
-rw-r--r-- 1 git git  740 Dec 11 14:16 id_rsa.pub
-rw-r--r-- 1 git git  222 Dec 11 14:24 known_hosts

当我在容器中挂载并做同样的操作时,所有者改变了:

total 40K
drwxr-xr-x    2 nobody   nobody      4.0K Apr  7 21:27 ./
drwxr-xr-x    5 git      git         4.0K Dec 11 14:09 ../
-rw-------    1 nobody   nobody      2.6K Apr  7 21:27 authorized_keys
-rw-------    1 nobody   nobody      2.5K Dec 11 15:34 authorized_keys_1675190689.gitea_bak
-rw-------    1 nobody   nobody        25 Dec 11 14:02 environment
-rw-------    1 nobody   nobody       411 Apr  7 21:25 id_ed25519
-rw-r--r--    1 nobody   nobody        96 Apr  7 21:25 id_ed25519.pub
-rw-------    1 nobody   nobody      3.3K Dec 11 14:16 id_rsa
-rw-r--r--    1 nobody   nobody       740 Dec 11 14:16 id_rsa.pub
-rw-r--r--    1 nobody   nobody       222 Dec 11 14:24 known_hosts

使用

挂载卷
services:
server:
volumes:
- /home/git/.ssh:/data/git/.ssh

有人知道这是怎么可能的吗?

我已经尝试安装相同的文件夹到另一个容器docker run -it -v /home/git/.ssh:/data/git/.ssh ubuntu:latest这次所有的文件都属于nobody:nogroup(之前是nobody:nobody),所以问题不在于容器内的服务

发现我的用户(在本例中为git)不在docker组中。

可以添加sudo usermod -aG docker git

每个docker映像将在Github中有一个Dockerfile检查是否有USER指令行,这并不完全是您在主机上的用户。要获取主机UID、GID,然后使用它们创建容器,我们可以[指定'user'][1]属性:

image: alpine
user: "${UID}:${GID}"

[1]: https://blog.giovannidemizio.eu/2021/05/24/how-to-set-user-and-group-in-docker-compose/

相关内容

  • 没有找到相关文章

最新更新