You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 11下使用Podman复制文件至容器时遇路径错误求助

在Windows 11 Podman中执行podman cp复制文件到SQL Server容器报错的排查与解决

我在Windows 11主机上用Podman运行了SQL Server容器,尝试用以下命令把本地的SQL脚本复制到容器内:

podman cp .\baseline.sql mssql-server-1:/tmp/baseline.sql

但收到错误提示:

error rewriting "c:....\baseline.sql" to be relative to "/": expected root directory to be an absolute path, got "/"

已经确认源和目标路径本身是正确的(修改路径时Podman会返回路径不存在的正常报错),以下是实测有效的排查思路和解决方案:

排查与解决步骤

  • 替换路径分隔符:Windows的反斜杠\在Podman的跨环境路径解析中容易出问题,把源路径的反斜杠换成正斜杠/再尝试:

    podman cp ./baseline.sql mssql-server-1:/tmp/baseline.sql
    
  • 使用本地绝对路径:明确指定Windows下的完整绝对路径,避免相对路径的解析歧义:

    podman cp C:\projects\sql-scripts\baseline.sql mssql-server-1:/tmp/baseline.sql
    

    如果路径包含空格,记得用双引号包裹:

    podman cp "C:\projects\sql scripts\baseline.sql" mssql-server-1:/tmp/baseline.sql
    
  • 切换到WSL终端执行命令:如果你的Podman使用WSL2后端,直接在WSL的终端里执行podman cp会更适配Linux容器的路径规则。WSL中Windows的C盘默认挂载在/mnt/c/,所以路径可以写成:

    podman cp /mnt/c/projects/sql-scripts/baseline.sql mssql-server-1:/tmp/baseline.sql
    
  • 检查容器目标目录权限:先确认容器内的/tmp目录是否有写入权限,进入容器查看:

    podman exec -it mssql-server-1 ls -ld /tmp
    

    如果权限不足,先创建一个权限开放的目录再复制:

    podman exec -it mssql-server-1 mkdir -p /tmp/sql-scripts && chmod 777 /tmp/sql-scripts
    podman cp ./baseline.sql mssql-server-1:/tmp/sql-scripts/baseline.sql
    
  • 替代方案:用卷挂载传递文件:如果podman cp始终无法正常工作,可以直接把本地脚本目录挂载到容器内:

    • 若容器未启动,启动时添加挂载参数:
      podman run -d -p 1433:1433 -v C:\projects\sql-scripts:/mnt/sql-scripts -e ACCEPT_EULA=Y -e SA_PASSWORD=YourStrong@Passw0rd mcr.microsoft.com/mssql/server:latest
      
    • 容器启动后,本地脚本会直接出现在容器的/mnt/sql-scripts目录下,无需额外复制操作。

内容的提问来源于stack exchange,提问作者MiguelSlv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 01:55:03