【Docker大揭秘】

news2024/11/30 10:34:19

Docker

  • 调试一天的血与泪的教训:
    • 设备条件:
    • 对应的build preparation
    • 相应的报错以及修改 作为记录
  • 构建FASTLIO2
  • 启动docker
  • 获取镜像
  • 列出镜像
  • 运行container
  • docker中实现宿主机与container中的文件互传

调试一天的血与泪的教训:

在DOCKER中跑通FASTLIO2:
FASTLIO2_ROS2

设备条件:

  1. ubuntu20.04 + docker(22.04 desktop版本)——>docker拉取镜像选择的网站docker拉取ubuntu22.04(ROS2 HUMBLE)
  2. docker (configuration 22.04) ——> ros2 humble版本 (foxy是天坑!)
    请添加图片描述

对应的build preparation

编译 LIVOX-SDK2
直接按照来没问题:需要在你拉取的container 中部署一个ws专门用来存放LIVOX的SDK软件工具包

git clone https://github.com/Livox-SDK/Livox-SDK2.git
cd ./Livox-SDK2/
mkdir build
cd build
cmake .. && make -j
sudo make install

展示如下图(这里的Livox-SDK2文件夹(因为在后续的livox_ros_driver2中会调用他的动态链库.so)):
请添加图片描述
编译 livox_ros_driver2
follow官网的教程 (可以说是很香,但是这里要关注./build.sh humble需要在ws_livox/src/livox_ros_driver2文件夹中才有 并且humble专用)

mkdir -r ws_livox/src
git clone https://github.com/Livox-SDK/livox_ros_driver2.git ws_livox/src/livox_ros_driver2
cd ws_livox/src/livox_ros_driver2
source /opt/ros/humble/setup.sh
./build.sh humble

编译gtsam
这个简单不说了
编译pcl
这里我的pcl选择的是1.14,但是github主运行的是1.10导致引入#include<pcl/io/io.h>中出现错误 同时 pcl在docker 中的安装目录和在宿主机中的安装目录存在差异 需要在cmakelist.txt中set相关的include_dir 以及相关的LIBRARIES_DIR保证你的点云库能够正确find(这个我针对我的框架做一个记录)

相应的报错以及修改 作为记录

Question
请添加图片描述
Answer
因为我是在docker中安装的livox_ros_driver2与宿主机直接默认安装在/usr/local/lib以及/usr/local/include中不一样 所以我对cmakelist(fastlio)进行了调整:
请添加图片描述
关注这里的set是我对应的缺少的两个cmake文件的父级目录。
需要修改对应的cmakelist.txt信息
Question
点云库使用的版本不对应 导致很多函数出现错误:
请添加图片描述Answer
cd 进入到安装pcl-1.14的include头文件位置 发现确实没有io.h:
所以将io.h改称pcd_io.h然后那个函数错了 根据参数调整 完事 一条龙
请添加图片描述

构建FASTLIO2

首先我选择新建一个ws专门用来fastlio2:

通过git clone 
然后 colcon build --symlink-install (build and install一站式服务到家)
运行ros节点 
这里我经常忘记source ./install/setup.bash
然后ros2 launch fastlio2 lio_launch.py(完美 报错了 这个报错我解决了一下午)

请添加图片描述请添加图片描述
Question

请添加图片描述
请添加图片描述这个报错 大致是:理解起来大致是:找不到共享库.so
请添加图片描述Answer
我 find / -name "相应的so"搜寻了对应的.请添加图片描述大概在这个位置:
请添加图片描述我找了很多ROS开源社区遇到问题的友友们怎么解决的 但是 貌似跟我的问题出现了差异
Answer
我最终解决方式
请添加图片描述

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/ws_livox/install/livox_ros_driver2/lib

启动docker

$ sudo systemctl enable docker 
$ sudo systemctl start docker

将需要使用 docker 的用户加入 docker 用户组
建立docker组

$ sudo groupadd docker

将当前用户加入 docker 组:

$ sudo usermod -aG docker $USER

获取镜像

从 Docker 镜像仓库获取镜像

$ docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

列出镜像

$ docker image ls

运行container

以这个镜像为基础启动并运行一个容器

docker ps -a(列出所有容器)
docker run -it container-name /bin/bash

请添加图片描述

bash:放在镜像名后的是 命令,这里我们希望有个交互式 Shell,因此用的是 bash。

因为执行ROS2程序往往需要同时开启多个终端窗口,所以 往往可以通过下面进行(但是进入到fastlio2文件夹后应该都需要source ./install/setup.bash)docker容器启动多个终端,docker启动多个终端

docker exec -it cd3b79a85d7e /bin/bash

请添加图片描述

docker中实现宿主机与container中的文件互传

请添加图片描述

docker ps -a 
docker run -it container-name /bin/bash

//复制文件
docker ps -a //查看所有container-name的ID
docker cp /宿主机文件内容绝对路径 容器名称:/目标复制路径
docker exe -it container-name /bin/bash//查看文件是否复制成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2225923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

numpy——数学运算

一、标量——矢量 import numpy as npa 3.14 b np.array([[9, 5], [2, 7]])print(a) print(b)# ---------- 四则运算 ---------- print(a b) # np.add print(a - b) # np.subtract print(a * b) # np.multiply print(a / b) # np.divide 二、矢量——矢量 import nump…

Claude Financial Data Analyst:基于Claude的金融数据分析工具!免费开源!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

MPC模型预测控制与RL强化学习的差异性

模型预测控制&#xff08;Model Predict Control&#xff0c;MPC&#xff09; 模型预测控制与强化学习的差异性调研 概述 MPC 是一种使用数学模型在有限时间内实时优化控制系统的技术&#xff0c;自二十世纪六七十年代问世以来&#xff0c;已广泛应用于化学工程、炼油、先进…

Java:String类(超详解!)

一.常用方法 &#x1f94f;1.字符串构造 字符串构造有三种方法&#xff1a; &#x1f4cc;注意&#xff1a; 1. String是引用类型&#xff0c;内部并不存储字符串本身 如果String是一个引用那么s1和s3应该指向同一个内容&#xff0c;s1和s2是相等的&#xff0c;应该输出两…

《深度学习》模型的部署、web框架 服务端及客户端案例

目录 一、模型的部署 1、模型部署的定义与目的 1&#xff09;定义 2&#xff09;目的 2、模型部署的步骤 1&#xff09;导出模型 2&#xff09; 部署模型 3&#xff09;测试模型 4&#xff09;监控模型 3、模型部署的方式 1&#xff09;云端部署 2&#xff09;嵌入…

autMan奥特曼机器人-对接Docker版本NTQQ详细教程

准备 1、准备一台服务器&#xff0c;amd64/arm64都可以&#xff0c;配置最好还是2核保底吧。 2、准备一个VNC软件。1Remote&#xff1a;点此下载 3、准备手机登陆机器人QQ号&#xff0c;扫码 NTQQ相关 NTQQ一键脚本&#xff08;适用于小白支持autMan/无界&#xff09; 复制以…

linux标准 I/O

FILE 指针标准输入、标准输出和标准错误检查或复位状态I/O 缓冲控制文件 I/O 内核缓冲的标志直接 I/O&#xff1a;绕过内核缓冲stdio 缓冲 FILE 指针 FILE 是一个结构体数据类型&#xff0c;它包含了标准 I/O 库函数为管理文件所需要的所有信息&#xff0c;包括用于实际I/O 的…

基于Spring Boot的宿舍管理系统设计与实现(源码+定制+开发)宿舍信息管理平台、智能宿舍系统开发、学生宿舍管理平台设计、宿舍入住与信息管理

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

单节点kubernetes-1.20二进制部署

文章目录 一, 集群拓扑二&#xff0c;架构图三&#xff0c;前置准备1.环境准备1.1操作系统初始化配置&#xff08;1&#xff09;关闭防火墙&#xff08;2&#xff09;关闭selinux&#xff08;3&#xff09;关闭swap&#xff08;4&#xff09;根据规划设置主机名&#xff08;5&a…

[简易版] 自动化脚本

前言 uniapp cli项目中没办法自动化打开微信开发者工具&#xff0c;需要手动打开比较繁琐&#xff0c;故此自动化脚本就诞生啦~ 实现 const spawn require("cross-spawn"); const chalk require("picocolors"); const dayjs require("dayjs&quo…

实战教程:利用Docker容器化技术部署Szurubooru图像分享平台

实战教程&#xff1a;利用Docker容器化技术部署Szurubooru图像分享平台 一、Szurubooru介绍1.1 Szurubooru简介1.2 主要特点1.3 主要使用场景 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker comp…

numpy——索引切片

一、索引和切片 import numpy as npx np.arange(48).reshape(6, 8) print(x)# 选取第二行 print(x[1]) #从0开始&#xff0c;取得第2行# 选取第二行, 第二列 print(x[1][1])# 选取第三行到最后一行, 第一列到最后一列 print(x[2:,2:])# 花式索引 (1, 1) 和 (4, 4) print(&quo…

MPP音视频总结

基础篇 1.常用图像格式介绍 常用图像像素格式 RGB 和 YUV。 1.1RGB RGB分类通常指的是将图像或颜色按照RGB&#xff08;红、绿、蓝&#xff09;颜色空间进行分组或分类。RGB图像格式通常包括RGB24&#xff08;RGB888&#xff09;、RGB32、RGBA、RGB565等。 RGB24是一种常用…

【CSS】入门详解

你是否曾经浏览网页时&#xff0c;被一些网站精美的布局、炫酷的动画和赏心悦目的色彩所吸引&#xff1f;这背后神奇的力量就是 CSS&#xff08;层叠样式表&#xff09;。CSS 就像网页的化妆师&#xff0c;它负责网页的样式和布局&#xff0c;让原本枯燥的 HTML 结构变得生动有…

AttributeError: module ‘pandas‘ has no attribute ‘datetime‘

今天在进行时间序列问题处理时候&#xff0c;发生如下报错&#xff1a; AttributeError: module pandas has no attribute datetime 因为在新的pands版本中pandas已不再支持datetime模块。 from datetime import datetime 需要导入datetime库。 原代码&#xff1a; impor…

2025选题|基于Hadoop的物品租赁系统的设计与实现

作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参与学生毕业答辩指导&#xff0c;…

《虚拟现实的边界:探索虚拟世界的未来可能》

内容概要 在虚拟现实&#xff08;VR&#xff09;技术的浪潮中&#xff0c;我们见证了其从实验室的奇想逐渐走向日常生活的非凡旅程。技术发展的背后是不断突破的创新&#xff0c;早期的设备虽然笨重&#xff0c;但如今却趋向精致、轻巧&#xff0c;用户体验显著提升。想象一下…

【MySQL】视图特性 用户管理

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是视图&#xff0c;我们又该如何管理用户。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! >…

旧衣物回收小程序开发,线上线下相结合

当下&#xff0c;绿色发展是重中之重&#xff0c;旧衣回收作为一件利国利民的模式&#xff0c;在发展中深受大众欢迎。随着大众生活水平的提高&#xff0c;家中闲置的衣物逐年增加&#xff0c;这也为旧衣回收市场发展提供了广阔的发展前景&#xff0c;为入局者和创业者提供新的…

keepalived+web 实现双机热备

环境&#xff1a;利用keeplived实现web服务器的双机热备(高可用) 注意&#xff1a; (1) 利用keeplivedweb做双击热备&#xff08;高可用&#xff09;&#xff0c;最少需要两台服务器&#xff0c;可以实现多域名对应一个VIP,并且访问不同域名&#xff0c;显示不同主页&#xf…