如何使用vscode命令行附加远程容器?

时间:2020-02-24 15:34:21

标签: visual-studio-code vscode-remote

我想使用命令行工具来附加远程容器。我尝试了此命令(请参见下文),但没有用。有人知道正确的命令吗?

code --folder-uri vscode-remote://dev-container+4aaf623ee98a52fa311226a2c619be19addfa221c090b9a3bc37e7cba03a7fce/easycv

3 个答案:

答案 0 :(得分:1)

dev-container +之后的字符串是指向您的dev容器文件夹(以十六进制编码)的ascii路径。

要在容器中打开文件夹,可以使用以下样式命令:

code --folder-uri=vscode-remote://dev-container%2B{path-in-hex}/{path-inside-container}

例如,要打开位于/workspaces/test的开发容器中的文件夹/Users/jkells/projects/vscode-devcontainer,我将使用以下CLI命令。

code --folder-uri=vscode-remote://dev-container%2B2f55736572732f6a6b656c6c732f70726f6a656374732f7673636f64652d646576636f6e7461696e6572/workspaces/test

要将字符串/Users/jkells/projects/vscode-devcontainer转换为十六进制2f55736572732f6a6b656c6c732f70726f6a656374732f7673636f64652d646576636f6e7461696e6572,可以使用以下命令

printf /Users/jkells/projects/vscode-devcontainer | od -A n -t x1 | tr -d '[\n\t ]'

答案 1 :(得分:1)

这个 shell 脚本完成了这项工作:

#!/usr/bin/env bash

case $# in
1) ;;
*) echo "Usage: code-remote-container <directory>"; exit 1 ;;
esac

dir=`echo $(cd $1 && pwd)`
hex=`printf ${dir} | od -A n -t x1 | tr -d '[\n\t ]'`
base=`basename ${dir}`
code --folder-uri="vscode-remote://dev-container%2B${hex}/workspaces/${base}"

我已将其保存在名称 code-remote-container 下,然后例如可以使用 如:

code-remote-container .

这将打开远程容器中的当前目录。

显然,这意味着已经为 vsc 设置了远程容器。

答案 2 :(得分:0)

要使其自动化,我创建了这个跨平台的解决方案:

https://github.com/geircode/vscode-attach-to-container-script

此解决方案基于正在运行的容器的名称创建十六进制。

Windows CMD脚本:

docker run --rm geircode/string_to_hex bash string_to_hex.bash "<container_name>" > vscode_remote_hex.txt

set /p vscode_remote_hex=<vscode_remote_hex.txt

code --folder-uri=vscode-remote://attached-container+%vscode_remote_hex%/app