Bootstrap

ubuntu20.04使用docker

ros崩调之后一直卸载重装都弄不好,整了两天了整不动了,换docker试试看。


1.docker安装

首先是安装docker,根据官方文档https://docs.docker.com/engine/install/ubuntu/和中文文档https://yeasy.gitbook.io/docker_practice/install/ubuntu安装,安装完之后使用docker version命令验证一下,能打印出版本等信息就说明安装好了。

如果出现“permission denied while trying to connect to the Docker daemon socket at unix”报错,可以试试下面的指令:

sudo chmod 666 /var/run/docker.sock

2.docker基本使用

列出镜像:

docker image ls

列出容器:

docker container ls

终止容器:

docker container kill [containID]

删除容器:

docker container rm [containerID]

3.ros noetic docker

首先拉取一个ubuntu20.04的镜像

docker pull ubuntu:20.04

为了容器能有图形化显示,启动容器时添加.X11,系统终端开放X11显示权限

docker run -it --name ubuntu2004 -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix ubuntu:20.04 /bin/bash

同时,在主机运行

xhost +   #允许所有主机连接X服务器

在docker 测试是否有图形化显示,测试结果为显示一个虚拟时钟

sudo apt-get install xarclock       #安装这个小程序
xarclock      

注意,docker 退出时, 需要关闭显示权限,保护系统

xhost -

 在容器内安装ros noetic, 参考如何在 docker 容器中安装 ROS_docker安装ros-CSDN博客​​​​​​

# 安装软件包
sudo apt-get update
sudo apt-get install -y lsb-release gnupg2

# 设置 ros 源:
sudo sh -c ' echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

# 设置秘钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

# 安装 ros noetic 桌面完整版
sudo apt-get update
sudo apt-get install -y ros-noetic-desktop-full

# 配置 ros 环境变量
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

# 安装打包工具依赖
sudo apt-get install -y python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

# 初始化 rosdep
sudo rosdep init
rosdep update

测试ros: 

roscore  #启动ros核心

# 另开一个shell
docker exec -it 容器ID/NAME /bin/bash
rosrun turtlesim turtlesim_node

# 再打开一个shell
docker exec -it 容器ID/NAME /bin/bash
rosrun turtlesim turtle_teleop_key

 

 

4.docker 启动状态查询,停止和启动,建立容器窗口

docker ps 指令显示系统正在运行的容器,关闭笔记本时需要退出容器

图片显示有一个容器正在运行

在主机终端base运行 停止容器命令:

docker stop ID/NAMES
# 例如: docker stop ubuntu0713

需要重新启动创建过的容器时:

docker start ID/NAMES
# 例如: docker start ubuntu0713

然后启动容器终端

docker exec -it ID/NAMES /bin/bash

 

5. 镜像保存

当docker的环境配置好时,为防止未来环境配置错误而重新恢复,需要存档,可以保存为一个自己的镜像文件,节省创建新镜像的时间和流量。

运行需要保存的docker->保存镜像->利用保存的镜像创建新的容器

docker commit ID/NAMES my_image_name

;