1. 为什么要在树莓派上玩Docker第一次接触树莓派和Docker的朋友可能会有疑问这个巴掌大的小电脑能跑得动容器吗我当初也有同样的顾虑直到在树莓派4B上成功运行了十几个轻量级容器后才彻底改观。树莓派搭载的ARM架构处理器完全支持Docker实测运行Nginx、MySQL这类服务时内存占用不到200MB。Docker最吸引我的地方在于环境隔离和快速部署。比如上周我需要测试一个Python爬虫项目用Docker只需要两行命令就能搭建好包含所有依赖的隔离环境不会污染主机系统。对于树莓派这种经常需要折腾的开发环境来说这种随用随建、用完即删的特性实在太方便了。2. 十分钟完成Docker安装2.1 一键脚本安装推荐新手树莓派社区最贴心的就是提供了开箱即用的安装脚本。打开终端输入以下命令喝杯咖啡的功夫就能装好curl -fsSL https://get.docker.com | sh这个脚本会自动完成三件事添加Docker官方GPG密钥验证软件包配置适合ARM架构的软件源安装最新稳定版的Docker CE社区版安装完成后别急着操作先把自己加入docker用户组否则每次都要输sudosudo usermod -aG docker pi # 退出重新登录生效2.2 手动安装适合进阶用户如果想更深入了解安装过程可以分步执行。首先更新软件源sudo apt update sudo apt install -y \ ca-certificates \ curl \ gnupg \ lsb-release接着添加Docker的GPG密钥和软件源注意树莓派要选armhf架构curl -fsSL https://download.docker.com/linux/raspbian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ deb [archarmhf signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/raspbian \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null最后安装Docker引擎sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io验证安装是否成功docker version # 应该能看到Client和Server的版本信息3. 加速你的容器下载3.1 配置国内镜像源直接拉取Docker官方镜像可能会很慢我们可以修改daemon.json文件没有的话会自动创建sudo nano /etc/docker/daemon.json加入以下内容推荐使用阿里云镜像加速需要去阿里云容器镜像服务申请专属地址{ registry-mirrors: [ https://your-aliyun-mirror.mirror.aliyuncs.com, https://docker.mirrors.ustc.edu.cn ] }保存后重启Docker服务sudo systemctl daemon-reload sudo systemctl restart docker3.2 测试加速效果拉个Ubuntu镜像试试速度docker pull ubuntu:20.04用这个命令可以查看实际使用的镜像仓库地址docker info | grep -A 1 Mirrors4. 可视化管理利器Portainer4.1 部署Portainer容器命令行玩久了总会想有个可视化界面Portainer就是专为Docker设计的轻量级管理工具。先创建数据卷docker volume create portainer_data然后运行容器9000端口记得在路由器开放docker run -d \ -p 9000:9000 \ --name portainer \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce:latest4.2 初始化配置浏览器访问http://树莓派IP:9000首次登录需要设置8位以上管理员密码选择Local连接本地Docker在Home中可以看到所有容器/镜像/卷的统计信息这里分享几个实用技巧点击Stacks可以一键部署docker-compose项目App Templates里有预置的WordPress、Nginx等应用模板在Containers页面可以直接编辑容器配置并热更新5. 必须掌握的Docker生存技能5.1 容器基础操作启动一个Nginx容器并映射80端口docker run -d --name my_nginx -p 80:80 nginx查看运行中的容器docker ps # 加-a参数显示所有容器包括已停止的进入容器内部调试docker exec -it my_nginx /bin/bash5.2 镜像管理查找Docker Hub上的镜像docker search mysql给镜像打标签并推送到私有仓库docker tag nginx my-registry:5000/nginx docker push my-registry:5000/nginx5.3 数据持久化创建命名卷推荐方式docker volume create mysql_data挂载到容器docker run -d \ --name mysql \ -v mysql_data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD123456 \ mysql:5.76. 避坑指南坑1镜像架构不匹配树莓派是ARM架构拉镜像时要找带-arm或-arm64后缀的版本或者确认镜像支持多架构。比如官方Python镜像就需要指定docker pull python:3.9-slim-buster坑2ZFS存储驱动问题如果发现容器启动失败可能是存储驱动不兼容。编辑/etc/docker/daemon.json{ storage-driver: overlay2 }坑3Portainer中文乱码在容器环境变量中添加-e TZAsia/Shanghai \ -e LANGC.UTF-8最后提醒下树莓派性能有限建议单个容器内存限制不超过512MB避免同时运行超过5个容器使用--restart unless-stopped替代always