Docker基础操作指南(树莓派5+Ubuntu运行ROS2 docker)


前言:
大家经常看到的虚拟机软件包括Docker,VMware,VirtualBox,Parallels Desktop,KVM(Kernel-based Virtual Machine),Hyper-V等等。Docker 是使用了是容器化技术(操作系统级别的虚拟化技术) ,使用非常广泛,其和传统虚拟机软件(如 VMware、VirtualBox、Parallels Desktop等)之间有几个重要的区别。

1.虚拟化方式:
传统虚拟机软件(如 VMware、VirtualBox 等):这些软件通过硬件虚拟化技术(如 Intel VT-x 或AMD-V)创建完整的虚拟化环境,每个虚拟机都运行一个完整的操作系统,并模拟硬件设备。因此,虚拟机之间的隔离性比较好,但启动和运行每个虚拟机都需要较多的系统资源。
Docker: Docker 使用了容器化技术,通过使用操作系统级别的虚拟化(例如 Linux容器)来创建容器。容器共享主机操作系统的内核,并在其上运行独立的用户空间。因此,相比传统虚拟机,Docker容器更加轻量级,启动和运行速度更快,并且更节省资源。
2. 资源利用:
传统虚拟机软件:由于每个虚拟机都运行一个完整的操作系统,因此会占用较多的系统资源,包括内存、处理器和存储空间。
Docker: Docker容器共享主机操作系统的内核和其他资源,因此它们更加轻量级,启动和运行速度更快,并且可以更有效地利用系统资源。
3. 隔离性:
传统虚拟机软件:由于每个虚拟机运行一个完整的操作系统,因此虚拟机之间的隔离性比较好。
Docker: Docker容器也提供了良好的隔离性,但它们共享主机操作系统的内核,因此容器之间的隔离性没有传统虚拟机那么好。
4. 部署和管理:
传统虚拟机软件:在传统虚拟机中,每个虚拟机都需要单独的操作系统安装和管理。虚拟机的创建、部署和管理都相对独立,需要更多的手动操作。
Docker: Docker 容器可以更轻松地创建、部署和管理。Docker 使用了镜像和容器的概念,可以更方便地分享和重复使用应用程序和服务,并且可以通过Dockerfile 自动化构建和部署容器。

其他使用容器化技术的虚拟机还包括Podman,rkt(Rocket),containerd,LXC(Linux Containers)等。

本文以树莓派5+ubuntu23.04 运行ros2 docker(ubuntu22.04+ros2)为例说明docker的基础使用。

在这里插入图片描述

1. 安装docker

Docker官网介绍几种安装Docker的方式

https://docs.docker.com/engine/install/ubuntu/
  1. 安装docker桌面应用:可以通过界面下载镜像/启动/关闭容器等操作,也可对通过界面对容器进行配置,如挂载目录,网络端口映射等,对于初学者较为友好。
  2. 安装docker命令行工具:通过命令行进行所有操作,需要熟悉docker常用命令的使用。
  3. 下载docker deb程序,然后手动安装
  4. 使用脚本安装

通常我们安装docker桌面应用或者命令行工具即可。

这里安装docker命令行工具

配置软件源

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

安装docker

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

运行hello-world示例

sudo docker run hello-world

查看创建的hello-world容器
在这里插入图片描述

2. 配置ROS2 docker容器

2.1 参考ros2 humble文档
https://docs.ros.org/en/humble/How-To-Guides/Installing-on-Raspberry-Pi.html
在这里插入图片描述

2.2 下载ros2 docker镜像
选择什么样的ros版本和版本选项,可参考

ROS2快速入门Python篇-版本梳理、环境搭建、源码架构介绍
https://blog.csdn.net/techfuture/article/details/137427653

这里选ros2 humble版本。

docker pull ros:humble-ros-core

2.3 运行humble-ros-core,生成一个新的容器

docker run -it --rm ros:humble-ros-core

docker run:创建一个新容器
-it:进入容器终端,并可通过指令交互
–rm:退出容器后,自动删除容器
此套指令通常用于启动一个临时的交互式容器,让用户可以在容器内执行命令并与其交互,且容器退出后自动删除,以保持系统的清洁和简洁。

注意,每次执行docker run都会产生一个新的容器,通常我们通过docker run --name创建指定名称的容器,后续使用docker start/stop/exec来启动/停止/进入该容器即可。具体操作可参考第3章Docker常用命令讲解章节。

3. docker基础命令讲解

3.1 镜像管理

下载镜像

docker pull <image_name>

查看下载了哪些docker镜像

docker images

删除image

sudo docker image rm hello-world:latest

在这里插入图片描述
注意区分docker image 和docker images
在这里插入图片描述

3.2 容器管理

创建容器
创建一个容器

docker run <image_name>

创建一个临时的交互式容器,让用户可以在容器内执行命令并与其交互,容器退出后自动删除。

docker run -it --rm <image_name>

创建名称为ros1的容器并挂载work目录

docker run -d -it --name=ros1 -v ~/work:/work <image_name>

docker run每次会生成一个新的容器,如果没有使用–name指定名称,docker ps显示的是随机名称,如下图。
在这里插入图片描述

启动容器

docker start <container_name>

关闭容器

docker stop <container_name>

docker start/stop:启动/关闭已有容器,不会删除容器中自己安装的软件和数据。

进入容器

docker exec -it <container_name> bash

查看运行容器

docker ps 

查看容器配置信息

docker inspect <container_name>

删除容器

docker rm <container_name>

比如这里删除名为ros1的容器,删除后再使用docker ps -a查看,此容器已不存在。
在这里插入图片描述

3.3 更多命令使用,可通过docker --help查询

在这里插入图片描述

  • 42
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值