Apollo自动驾驶学习(1):创建容器脚本的理解&docker run创建docker volume

在项目的/apollo-master/docker/scripts目录下有cyberrt环境,dev环境、runtime环境的创建和进入脚本。其中*_start.sh是创建容器的脚本,*_into.sh是进入容器的脚本。

其中*_start.sh的内容比较多,比较难理解,简单讲,这个脚本会先拉取一个基础的docker镜像。
拉取深度学习模型镜像,地图资源镜像,利用后拉取的辅助镜像创建docker volume。
在这里插入图片描述
能看到基础的镜像为apolloauto/apollo:dev-x86_64-18.04-20221124_1708
其余都是辅助镜像。

函数 docker_restart_volume() 用于重新创建一个指定名称和指定路径的 Docker Volume,并且指定使用哪个 Docker Image 来初始化 Volume 内容。该函数会首先拉取指定的 Docker Image,然后移除原有的 Volume 并重新创建一个新的 Volume,最后使用 Docker Image 中的内容来填充该 Volume。
函数中的这一句用docker run来创建Docker Volume,这种方式是我第一次见到,所以记录下

docker run -v "${volume}":"${path}" --rm "${image}" true

这里使用了 docker run 命令来创建一个新的容器,并通过 -v 参数来挂载一个 Docker Volume。具体来说,${volume} 表示要创建的 Volume 的名称,${path} 表示要挂载到容器中的目录路径,而image则表示用于初始化 Volume 内容的 Docker 镜像名称。

true 是容器内部执行的命令,因为 docker run 命令需要指定一个容器内部执行的命令,所以这里使用了一个不做任何事情的 true 命令来占位,从而让容器在启动后立即退出。这样就可以保证 Docker Volume 已经被填充了对应的内容并且保存到了本地磁盘上。同时,–rm 参数则表示容器退出后会自动删除,避免产生无用的容器占用系统资源。

在最终的创建容器时挂载第二步创建的docker volume。

    ${DOCKER_RUN_CMD} -itd \
        --privileged \
        --name "${DEV_CONTAINER}" \
        -e DISPLAY="${display}" \
        -e DOCKER_USER="${user}" \
        -e USER="${user}" \
        -e DOCKER_USER_ID="${uid}" \
        -e DOCKER_GRP="${group}" \
        -e DOCKER_GRP_ID="${gid}" \
        -e DOCKER_IMG="${DEV_IMAGE}" \
        -e USE_GPU_HOST="${USE_GPU_HOST}" \
        -e NVIDIA_VISIBLE_DEVICES=all \
        -e NVIDIA_DRIVER_CAPABILITIES=compute,video,graphics,utility \
        #这里开始挂载volume
        ${MAP_VOLUMES_CONF} \
        ${OTHER_VOLUMES_CONF} \
        ${local_volumes} \
        --net host \
        -w /apollo \
        --add-host "${DEV_INSIDE}:127.0.0.1" \
        --add-host "${local_host}:127.0.0.1" \
        --hostname "${DEV_INSIDE}" \
        --shm-size "${SHM_SIZE}" \
        --pid=host \
        -v /dev/null:/dev/raw1394 \
        "${DEV_IMAGE}" \
        /bin/bash

最后我也自己操作了一下创建volume。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值