Docker使用记录——测试LIO_SAM

3 篇文章 1 订阅
1 篇文章 0 订阅

Docker使用记录——测试LIO_SAM


参考链接


相关概念

docker build
docker run
docker push
docker pull
docker commit
docker tag
Dockerfile
定制镜像文件
Image
镜像
Container
容器
Docker
Hub

获取管理员权限

docker守护进程启动的时候,会默认赋予名字为docker的用户组读写Unix socket的权限,因此只要创建docker用户组,并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命令

sudo groupadd docker     #添加docker用户组
sudo gpasswd -a $USER docker     #将登陆用户加入到docker用户组中
newgrp docker     #更新用户组
docker ps    #测试docker命令是否可以使用sudo正常使用

获取镜像

如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像:

docker pull ubuntu #默认拉取最新的latest
# docker pull ubuntu:18.04
# docker pull ubuntu:20.04

启动容器

以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:

docker run -itd ubuntu /bin/bash 
docker attach e2 #exit退出容器终端,会导致容器的停止

image-20221213172755654

docker restart 5bf #先启动容器

docker exec -it 5bf /bin/bash #exit退出容器终端,不会导致容器的停止,推荐使用

image-20221213171501208

参数说明:
-i: 交互式操作
-t: 终端
ubuntu: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入 exit


后台运行

在大部分的场景下,我们希望 docker 的服务是在后台运行的,可以通过 -d 指定容器的运行模式。

docker run -itd --name ubuntu-test ubuntu /bin/bash

更新镜像

在运行的容器内使用 apt-get update 命令进行更新。

在完成操作之后,输入 exit 命令来退出这个容器。

此时 ID 为 e2 的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit 来提交容器副本。

image-20221213212553243

各个参数说明:

  • -m: 提交的描述信息
  • -a: 指定镜像作者
  • **e2:**容器 ID
  • caohaojie/ubuntu:v1: 指定要创建的目标镜像名

可以使用 docker images 命令来查看我们的新镜像 caohaojie/ubuntu:v1


设置镜像标签

可以使用 docker tag 命令,为镜像添加一个新的标签

docker tag 55a caohaojie/ubuntu:v2

docker tag 镜像ID 用户名称 镜像源名(repository name):新的标签名(tag)


Docker容器图形化界面显示

参考链接

具体操作

  • 在本地主机上安装x11界面服务
sudo apt-get install x11-xserver-utils
xhost + 

这两句的作用是开放权限,允许所有用户,当然包括docker,访问X11的显示接口

xhost + 每次重新开机,需要在本机操作一次,故选择将xhost + ,加入开机启动脚本——ros开机启动roscore及launch文件_蒋程扬的博客-CSDN博客_ros设置开机自启动roscore

  • 在启动docker容器时,添加选项如下

-v /tmp/.x11-unix:/tmp/.x11-unix \ #共享本地unix端口

-e DISPLAY=unix$DISPLAY \ #修改环境变量DISPLAY

-e GDK_SCALE \ #这两个是与显示效果相关的环境变量,实际测试时,不添加这两个环境变量也可以

-e GDK_DPI_SCALE

完整命令

docker run -it -v /tmp/.x11-unix:/tmp/.x11-unix -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE --net=host ubuntu:18.04 /bin/bash

如果不加--net=host,可能会出现以下问题:

Error: cannot open display: localhost:10.0

cannot open display: unix:0

VS_Code配置

前提:ubuntu已安装好docker,code安装好docker插件

1.点击Docker Help ---->2.点击Edit setting---->3.修改 Docker › Commands: Run Interactive如下

"docker.commands.runInteractive": "${containerCommand} run --rm -it -v /tmp/.x11-unix:/tmp/.x11-unix -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE --net=host ${exposedPorts} ${tag}"

测试LIO_SAM

  • 新建Dockerfile

新建Dockerfile,复制LIO_SAM仓库目录下的Dockerfile的内容,将第5行的内容去掉,修改后如下

FROM osrf/ros:kinetic-desktop-full-xenial

RUN apt-get update \
    && apt-get install -y curl \
    && apt-get update \
    && apt-get install -y ros-kinetic-navigation \
    && apt-get install -y ros-kinetic-robot-localization \
    && apt-get install -y ros-kinetic-robot-state-publisher \
    && rm -rf /var/lib/apt/lists/*

RUN apt-get update \
    && apt install -y software-properties-common \
    && add-apt-repository -y ppa:borglab/gtsam-release-4.0 \
    && apt-get update \
    && apt install -y libgtsam-dev libgtsam-unstable-dev \
    && rm -rf /var/lib/apt/lists/*

SHELL ["/bin/bash", "-c"]

RUN mkdir -p ~/catkin_ws/src \
    && cd ~/catkin_ws/src \
    && git clone https://github.com/TixiaoShan/LIO-SAM.git \
    && cd .. \
    && source /opt/ros/kinetic/setup.bash \
    && catkin_make

RUN echo "source /opt/ros/kinetic/setup.bash" >> /root/.bashrc \
    && echo "source /root/catkin_ws/devel/setup.bash" >> /root/.bashrc

WORKDIR /root/catkin_ws
  • docker build-建立镜像

在Dockerfile的当前目录运行如下命令

docker build -t caohaojie/lio_sam:dev .

打开vs code的docker活动栏,能显示出建立完成的镜像

  • docker run-启动容器

选中目标镜像,右键点击 Run Interactive 启动容器

code_run_image

  • 运行数据集
  1. 在容器终端启动launch文件
roslaunch lio_sam run.launch
  1. 在本地终端播放数据集

最终结果如图所示

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值