Linux Docker容器中的Docker未映射.ssh卷

Linux Docker容器中的Docker未映射.ssh卷,linux,docker,ssh,Linux,Docker,Ssh,我试图将一个卷从我的主主机映射到一个docker容器,然后再创建另一个docker容器 我的第一个容器是按照以下步骤创建的: docker run --rm -it \ -e JOB="release" \ -e LOG_FOLDER="$logDirectory" \ -v "$logDirectory":"$logDirectory" \ -e TEMP_FOLDER="$tempFolder" \ -v ~/.ssh:/root/.ssh \ -v "$tempFolder":"$temp

我试图将一个卷从我的主主机映射到一个docker容器,然后再创建另一个docker容器

我的第一个容器是按照以下步骤创建的:

docker run --rm -it \
-e JOB="release" \
-e LOG_FOLDER="$logDirectory" \
-v "$logDirectory":"$logDirectory" \
-e TEMP_FOLDER="$tempFolder" \
-v ~/.ssh:/root/.ssh \
-v "$tempFolder":"$tempFolder" \
-v /var/run/docker.sock:/var/run/docker.sock \
release
docker run --rm -it \
-e JOB=summary \
-e TEMP_FOLDER="$TEMP_FOLDER" \
-v "$TEMP_FOLDER":"$TEMP_FOLDER" \
-v ~/.ssh:/root/.ssh \
-v /var/run/docker.sock:/var/run/docker.sock \
summary /bin/bash
上面的方法非常有效,当I/bin/bash进入这个容器时,我可以看到.ssh文件夹已经映射并显示了来自主机的内容

但是,当我尝试在此容器中创建另一个docker容器时,请使用以下命令:

docker run --rm -it \
-e JOB="release" \
-e LOG_FOLDER="$logDirectory" \
-v "$logDirectory":"$logDirectory" \
-e TEMP_FOLDER="$tempFolder" \
-v ~/.ssh:/root/.ssh \
-v "$tempFolder":"$tempFolder" \
-v /var/run/docker.sock:/var/run/docker.sock \
release
docker run --rm -it \
-e JOB=summary \
-e TEMP_FOLDER="$TEMP_FOLDER" \
-v "$TEMP_FOLDER":"$TEMP_FOLDER" \
-v ~/.ssh:/root/.ssh \
-v /var/run/docker.sock:/var/run/docker.sock \
summary /bin/bash
创建容器时没有问题,但尚未映射.ssh文件夹内容。但是TEMP_文件夹已经正确映射,并且显示了主机的内容,我不知道为什么.ssh文件夹没有这样做


是否存在权限问题?

不确定原因,但我找到的解决方法如下,可能不同容器的根用户不同

docker run --rm -it \
-e JOB="release" \
-e LOG_FOLDER="$logDirectory" \
-v "$logDirectory":"$logDirectory" \
-e TEMP_FOLDER="$tempFolder" \
-v ~/.ssh:/root/.ssh \
-v ~/.ssh:/home/user/.ssh \
-v /home/user/.ssh:/root/.ssh \
-v "$tempFolder":"$tempFolder" \
-v /var/run/docker.sock:/var/run/docker.sock \
release

我不知道为什么,但我发现的解决方法如下,也许根用户在不同容器中是不同的

docker run --rm -it \
-e JOB="release" \
-e LOG_FOLDER="$logDirectory" \
-v "$logDirectory":"$logDirectory" \
-e TEMP_FOLDER="$tempFolder" \
-v ~/.ssh:/root/.ssh \
-v ~/.ssh:/home/user/.ssh \
-v /home/user/.ssh:/root/.ssh \
-v "$tempFolder":"$tempFolder" \
-v /var/run/docker.sock:/var/run/docker.sock \
release

容器中的外壳在传递给主机之前会展开
~
,主机Docker守护进程始终解释
-v
选项(您无法将装载容器内容绑定到另一个容器)。还请记住,您可以在读写模式下(包括
/etc/shadow
/etc/sudoers
)按字面意思绑定任何主机文件,因此在这种模式下要非常小心引用和安全问题。容器中的外壳在传递到主机之前会展开
~
,主机Docker守护进程总是解释
-v
选项(您不能将装载容器内容绑定到另一个容器中)。还请记住,您可以在读写模式下(包括
/etc/shadow
/etc/sudoers
)按字面意思绑定任何主机文件,因此在这种模式下,请非常小心引用和安全问题。