将。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/