我想使用命令行工具来附加远程容器。我尝试了此命令(请参见下文),但没有用。有人知道正确的命令吗?
code --folder-uri vscode-remote://dev-container+4aaf623ee98a52fa311226a2c619be19addfa221c090b9a3bc37e7cba03a7fce/easycv
答案 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