当我尝试将工作区目录挂载到 Docker 容器(带有-v
)的代码空间中时,挂载的路径为空,例如:
$ ls /workspaces/myrepo
[list of files]
$ docker run -it --rm -v /workspaces/myrepo:/app alpine:latest
/ # ls /app
[nothing]
当我尝试将工作区目录挂载到 Docker 容器(带有-v
)的代码空间中时,挂载的路径为空,例如:
$ ls /workspaces/myrepo
[list of files]
$ docker run -it --rm -v /workspaces/myrepo:/app alpine:latest
/ # ls /app
[nothing]
我相信这是因为 Codespace 本身是在 Docker 中运行的,因此挂载点相对于 Docker 主机(属于 Codespace),而不是相对于运行 Codespace 的容器。
一种解决方案是使用--volumes-from
重新安装您正在启动的容器内/workspaces/myrepo
的代码空间(例如)的卷。这需要知道运行 Codespace 的容器的容器 ID,我们可以使用.docker ps --filter "label=Type=codespaces"
作为奖励--workdir
,还可以用于在当前目录中启动容器。
把它放在一起:
$ docker run -it --rm --volumes-from $(docker ps --filter "label=Type=codespaces" -q) --workdir $(pwd) alpine:latest
/workspaces/myrepo/ # ls .
[list of files]