4. 如何将数据包保存至外部挂载的硬盘?

由于自动驾驶每天录制的数据包比较大,计划使用外部硬盘来保存这些数据。请问如何实现?

4.1. 回答

默认情况下,数据会存储在容器中,但为了实现数据持久化并防止数据丢失,需要将外部硬盘挂载到主机的特定目录,再将该目录挂载到容器内。这样,数据将保存在硬盘上,不会随容器停止而丢失。

4.2. 在 Ubuntu 下挂载硬盘到容器的步骤

  1. 识别外部硬盘设备

    lsblk
    

    找到你的外部硬盘设备名(例如 /dev/sdb1)。

  2. 创建挂载目录

    创建一个用于挂载硬盘的目录(例如 /apollo/data/bag)。

    cd apollo
    sudo mkdir -p data/bag
    
  3. 挂载硬盘

    使用 mount 命令将硬盘挂载到该目录。

    sudo mount /dev/sdb1 data/bag
    
  4. 【跳过】启动容器并挂载目录

    在启动容器时,将该挂载目录绑定到容器内部的路径(例如 /data)。

    docker run -v /mnt/external_drive:/data your_container_image
    

    > 因为 apollo 目录已经默认挂载到容器,因此可以跳过该步骤。

这样,外部硬盘的数据就可以通过容器内的 /data 目录访问,并在容器重启或停止后仍然保留在硬盘中。

4.3. 录制数据包

录制数据包,并且指定保存路径。

cyber_recorder record -a -o=data/bag