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

如何在本地非容器环境运行容器内的run_test.sh脚本(WSL Ubuntu)

实现方案

1. 确认容器基础信息

先明确你的容器镜像名称(比如test-image)、容器内run_test.sh的绝对路径(比如/app/run_test.sh),以及脚本运行需要挂载的本地资源(比如测试数据目录)。

2. 在WSL Ubuntu中创建本地包装脚本

在WSL的可执行路径下(比如~/bin,没有的话先执行mkdir -p ~/bin,再把路径加入环境变量:echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc),创建名为run_test.sh的脚本:

#!/bin/bash

# 替换成你的容器参数
IMAGE_NAME="你的容器镜像名"
SCRIPT_IN_CONTAINER="/app/run_test.sh"
# 本地测试数据目录,不需要挂载可删除这两行
LOCAL_DATA="$HOME/test-data"
CONTAINER_DATA="/data"

# 启动容器并执行脚本,自动传递本地调用时的参数
docker run --rm -v "$LOCAL_DATA":"$CONTAINER_DATA" "$IMAGE_NAME" bash -c "$SCRIPT_IN_CONTAINER $@"

关键参数说明:

  • --rm:脚本执行完自动销毁容器,避免残留无用容器
  • -v:挂载本地目录到容器,保证脚本能访问所需资源(无挂载需求可删除此部分)
  • $@:将本地调用时传入的参数原样传递给容器内的脚本

3. 给脚本添加执行权限

执行命令:

chmod +x ~/bin/run_test.sh

4. 测试运行

在WSL非容器环境直接调用:

run_test.sh [你的脚本参数]

系统会自动启动对应容器,在容器内执行目标脚本,并将输出返回本地终端。

补充:复用容器的优化方案

如果需要重复使用同一个容器(减少启动开销),可以修改包装脚本为:

#!/bin/bash

CONTAINER_NAME="test-container"
IMAGE_NAME="你的容器镜像名"
SCRIPT_IN_CONTAINER="/app/run_test.sh"
LOCAL_DATA="$HOME/test-data"
CONTAINER_DATA="/data"

# 检查容器是否存在,不存在则创建后台运行的容器
if ! docker inspect "$CONTAINER_NAME" &> /dev/null; then
    docker run -d -v "$LOCAL_DATA":"$CONTAINER_DATA" --name "$CONTAINER_NAME" "$IMAGE_NAME" tail -f /dev/null
fi

# 在运行的容器内执行脚本
docker exec -i "$CONTAINER_NAME" bash -c "$SCRIPT_IN_CONTAINER $@"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:25:16