Step1: load them into your WSL2 environment by command:

"docker load -i <tar_file>"

docker run -it \
  --name persistency_demo \
  --entrypoint /bin/bash \
  vsc-vsps_persistency_demo:latest

首次打开Docker镜像:

docker run -it --entrypoint /bin/bash vsc-vsps_car_window_demo:latest

# 启动已停止的容器
docker start -i car_demo

进入已运行的容器(推荐)

如果你只是想在新终端中进入同一个容器,使用 docker exec

docker exec -it 5735c456951a /bin/bash

# 启动已停止的容器
docker start -i car_demo

在Docker中

# 使用 docker0 的 IP 作为代理
export HTTP_PROXY=http://172.17.0.1:3129
export HTTPS_PROXY=http://172.17.0.1:3129
export http_proxy=http://172.17.0.1:3129
export https_proxy=http://172.17.0.1:3129
export NO_PROXY=localhost,127.0.0.1

# 测试
curl -I https://www.baidu.com

解决方案:配置 apt 使用代理

方法1:临时配置 apt 代理(推荐)

bash

# 使用 -o 选项临时指定代理
sudo apt -o Acquire::http::Proxy="http://172.17.0.1:3129" -o Acquire::https::Proxy="http://172.17.0.1:3129" update

方法2:永久配置 apt 代理

bash

# 创建 apt 代理配置文件
echo 'Acquire::http::Proxy "http://172.17.0.1:3129";
Acquire::https::Proxy "http://172.17.0.1:3129";' | sudo tee /etc/apt/apt.conf.d/95proxies

# 然后正常使用 apt
sudo apt update

您当前容器正在运行,可以直接使用此命令:

# 在宿主机(不是容器内)执行
# 拷贝整个项目目录到容器的 /root 目录
docker cp /home/iiu4sgh/VSPS_GP_0.1.0 car_demo:/root/
car_demo是通过docker ps看出来的

# 或者拷贝当前目录下的项目
docker cp ~/VSPS_GP_0.1.0 car_demo:/root/

拷贝完成后,进入容器即可看到项目:

docker start -i car_demo
cd /root/VSPS_GP_0.1.0
bazel build //...

docker cp 常用语法

# 拷贝文件到容器
docker cp /主机/文件路径 容器名:/容器/目标路径

在 DevContainer 运行时,构建项目:

构建所有目标

bash

bazel build //...

此命令会:

  • 编译所有 Rust 二进制文件(car_window_bincar_window_controller_bin

  • 从 SCIDL 定义生成代码

  • 验证配置文件

  • 将日志和中间件配置复制到输出目录

  • 为共享类型创建库目标

  • 首次构建需要几分钟(后续构建会利用缓存,速度更快)


构建单个应用

bash

# 仅构建车窗应用
bazel build //car_window_app:car_window

# 仅构建控制器应用
bazel build //car_window_controller_app:car_window_controller

验证构建成功

构建成功后,应该看到类似以下输出:

text

INFO: Build completed successfully, <n> total actions

常见构建问题

如果构建失败:

bash

# 清理构建缓存并重试
bazel clean
bazel build //...

# 深度清理(删除所有构建产物)
bazel clean --expunge
bazel build //...

运行应用

应用必须在两个独立的终端中按特定顺序运行:

终端 1:先启动控制器应用

bash

bazel run //:car_window_controller

终端 2:再启动车窗应用

bash

bazel run //:car_window

重要提示:

  • 必须先启动 car_window_controller,然后再启动 car_window

  • 两个应用必须同时运行才能正常通信

  • 服务发现过程中可能会显示警告信息,这是正常现象(正在搜索服务

docker run -it --entrypoint /bin/bash vsc-vsps_car_window_demo:latest 启动容器后,你没有指定容器名称,所以 Docker 会随机生成一个名字(比如之前的 infallible_spence)。

当你 exit 退出后,容器会停止没有被删除(因为没有 --rm 参数),所以可以再次进入。


步骤1:查看所有容器(包括已停止的)

docker ps -a

找到你刚才启动的容器,看 NAMES 列(比如 infallible_spence)或 CONTAINER ID


步骤2:重新启动该容器并进入

方法1:启动并进入(推荐)

bash

docker start -i <容器名称或ID>

例如:

bash

docker start -i infallible_spence

Docker 不允许直接重命名正在运行的容器,但你的容器已经停止了,可以重命名。


重命名容器

bash

docker rename infallible_spence car_window_demo

验证重命名成功

bash

docker ps -a

现在应该看到容器名变成了 car_window_demo


重新启动并进入容器

bash

docker start -i car_window_demo

完整操作示例

bash

# 1. 重命名
docker rename infallible_spence car_window_demo

# 2. 确认
docker ps -a

# 3. 启动并进入
docker start -i car_window_demo

Docker 重命名语法

bash

docker rename <旧容器名> <新容器名>

注意:

  • 容器可以是运行中或停止状态

  • 新名字不能与现有容器重名

  • 重命名后,容器 ID 不变,只有名字改变


执行 docker rename infallible_spence car_window_demo 即可。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐