一、什么是Docker?
Docker是一个开源的容器化平台,它允许开发者将应用程序及其依赖打包到一个轻量级、可移植的容器中。容器与虚拟机不同,它直接运行在宿主机的操作系统内核上,无需额外的操作系统层,因此启动更快、资源占用更少。
核心概念:
镜像(Image):只读模板,包含运行应用所需的所有文件和配置
容器(Container):镜像的运行实例,可启动、停止、删除
仓库(Registry):存储镜像的地方,如Docker Hub
二、Docker安装验证实战
- 安装Docker(Ubuntu 22.04)
更新包索引
sudo apt update
安装依赖包
sudo apt install apt-transport-https ca-certificates curl software-properties-common
添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
添加Docker仓库
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安装Docker引擎
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker
将当前用户加入docker组(避免每次sudo)
sudo usermod -aG docker $USER
注销重新登录或执行:
newgrp docker
- 验证安装成功
检查Docker版本
docker --version
输出:Docker version 28.2.2, build 28.2.2-0ubuntu1~22.04.1
检查服务状态
sudo systemctl status docker
应该显示 active (running)
运行测试容器
docker run hello-world
看到"Hello from Docker!"说明安装成功
三、加载和运行FastDDS Shapes Demo
- 加载本地镜像
进入镜像文件所在目录
cd /opt/fast-dds/pakage/ubuntu-fastdds-shape
加载tar格式的镜像
docker load -i "ubuntu-fastdds-shapes-demo v3.2.2.tar"
输出:Loaded image: ubuntu-fastdds-shapes-demo:v3.2.2
查看已加载的镜像
docker images
应该看到:ubuntu-fastdds-shapes-demo v3.2.2
- 配置X11显示(GUI应用必备)
允许Docker访问X11显示
xhost +local:docker
或者允许所有连接(开发环境用)
xhost +
- 运行FastDDS Shapes Demo
单机模式(一个容器同时运行发布者和订阅者):
docker run -it --rm
-e DISPLAY=$DISPLAY
-v /tmp/.X11-unix:/tmp/.X11-unix
ubuntu-fastdds-shapes-demo:v3.2.2
分布式模式(多个容器通信):
终端1 - 发布者
docker run -it --rm
-e DISPLAY=$DISPLAY
-v /tmp/.X11-unix:/tmp/.X11-unix
ubuntu-fastdds-shapes-demo:v3.2.2
/bin/bash -c "cd /root && ./entrypoint.bash publisher"
终端2 - 订阅者
docker run -it --rm
-e DISPLAY=$DISPLAY
-v /tmp/.X11-unix:/tmp/.X11-unix
ubuntu-fastdds-shapes-demo:v3.2.2
/bin/bash -c "cd /root && ./entrypoint.bash subscriber"
四、常见问题排查
- X11显示问题
检查DISPLAY变量
echo $DISPLAY
应该是 :0 或 :1
如果为空,设置DISPLAY
export DISPLAY=:0
检查X11权限
xhost
应该显示:access control disabled, clients can connect from any host
如果提示权限错误,尝试:
sudo xhost +
- 磁盘空间不足
查看磁盘使用情况
df -h
如果根分区空间不足,清理:
清理Docker缓存
docker system prune -a -f
清理系统日志
sudo journalctl --vacuum-time=1d
sudo rm -f /var/log/.log.
sudo rm -f /var/log/*.gz
清理apt缓存
sudo apt clean
sudo apt autoremove --purge -y
- 网络问题
如果无法拉取镜像,配置国内镜像源
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}
EOF
sudo systemctl restart docker
五、Docker常用命令速查
查看运行中的容器
docker ps
查看所有容器(包括已停止的)
docker ps -a
停止容器
docker stop <容器ID或名称>
删除容器
docker rm <容器ID或名称>
删除镜像
docker rmi <镜像ID或名称>
查看容器日志
docker logs <容器ID>
进入运行中的容器
docker exec -it <容器ID> /bin/bash
查看容器资源使用
docker stats
清理所有停止的容器和未使用的镜像
docker system prune
六、FastDDS Shapes Demo使用说明
界面功能
Publisher窗口(发布者):
Shape:选择形状(Square/Circle/Triangle)
Color:选择颜色(Red/Green/Blue/Yellow等)
Size:调整形状大小
Speed:调整移动速度
Start/Stop:开始/停止发布
Subscriber窗口(订阅者):
实时显示接收到的形状
形状会移动、旋转
支持多对多通信
核心概念
Publisher:数据发布者,创建并发送形状信息
Subscriber:数据订阅者,接收并显示形状
Topic:数据主题(Square、Circle、Triangle)
Domain:通信域(默认0)
QoS:服务质量,控制传输可靠性
分布式通信演示
打开多个终端,分别运行发布者和订阅者,可以观察到:
所有订阅者都会收到所有发布者的形状
实时看到形状的创建、移动、删除
演示了DDS的发布-订阅模式
七、总结
通过FastDDS Shapes Demo的实战,我们掌握了Docker的核心操作:
镜像管理:加载、查看、删除镜像
容器运行:启动、停止、进入容器
GUI应用:配置X11显示运行图形界面
问题排查:磁盘空间、网络、权限问题处理
Docker的容器化技术让应用部署变得简单、一致、可移植,是现代开发和运维的必备技能
