Jetson Nano 2026 在树莓派/JetsonNano安装docker
docker是一款流行的应用程序开发,发布和运行平台。Docker 能够帮助你将应用程序与基础架构分离,以便快速交付软件。使用了Docker,你可以不用担心应用软件和操作系统不兼容或者缺少某些特定的库文件的问题,因此它特别适合在微型电脑上使用。本文介绍通用的安装Docker方法,在树莓派和Jetson Nano上都测试过,能成功安装。
第一步,更新apt repository
sudo apt-get -y update && sudo apt-get -y upgrade
第二步,从官网下载脚本并运行
curl -s https://get.docker.com | bash
运行成功是这个样子的

第三步,检查docker版本
sudo docker version
安装正常的话应该是这样子的
运行docker info获得更详细的系统信息
sudo docker info
第四步,设置开机自动运行docker,并且启动它
sudo systemctl enable docker
sudo systemctl start docker
检查是否运行成功
sudo docker ps
成功的样子是这样的

第五步,从docker hub下载hello-world来测试一下
sudo docker pull hello-world
成功的样子是这样的
如果出现这样的提示,“Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit” ,你可以尝试在docker hub注册一个账号,然后登录后再pull,因为docker hub现在限制了匿名pull的频率。
sudo docker login
登录成功是这样子的,

第六步,运行hello-world
sudo docker run hello-world
成功运行是这样子的,
看看我们的image list里面是否有这个hello world
sudo docker images

第七步,清理hello-world
虽然这个hello world只有几k,但有最求整洁的我要把它删掉
sudo docker image rm --force 1ec996c686eb
再看看images

安装成功了!
接下来让我们深入了解一些常用的Docker概念和命令,帮助你更好地在树莓派和Jetson Nano上使用Docker。
Docker 与 Docker Compose 的区别
很多初学者会混淆Docker和Docker Compose,简单来说:
- Docker:是一个容器化平台,用于创建、运行和管理单个容器。你通过
docker run命令启动容器,通过命令行参数来配置端口映射、环境变量等。 - Docker Compose:是一个用于定义和运行多容器Docker应用的工具。通过一个YAML文件(
docker-compose.yml)来配置应用的所有服务,然后使用一条命令就能启动所有服务。
当你需要在设备上运行多个服务(比如同时运行数据库、Web服务器和消息队列)时,Docker Compose能大大简化你的工作流程。
安装Docker Compose:
sudo apt-get install -y docker-compose-plugin
常用Docker命令速查
以下是日常使用中最常见的Docker命令:
| 命令 | 说明 | 示例 |
|---|---|---|
docker run | 运行容器 | docker run -d -p 8080:80 nginx |
docker ps | 查看运行中的容器 | docker ps -a(包括已停止的) |
docker stop | 停止容器 | docker stop container_id |
docker rm | 删除容器 | docker rm container_id |
docker images | 列出本地镜像 | docker images -a |
docker logs | 查看容器日志 | docker logs -f container_id |
docker exec | 在运行中的容器里执行命令 | docker exec -it container_id bash |
docker pull | 下载镜像 | docker pull ubuntu:latest |
一个典型的工作流程:
# 启动一个nginx容器,后台运行,映射8080端口
sudo docker run -d --name my-nginx -p 8080:80 nginx
# 查看运行中的容器
sudo docker ps
# 查看容器日志
sudo docker logs my-nginx
# 停止并删除容器
sudo docker stop my-nginx
sudo docker rm my-nginx
ARM架构特别说明
树莓派和Jetson Nano都是ARM架构的处理器,与常见的x86(Intel/AMD)处理器不同。在选择Docker镜像时需要注意:
- 树莓派(32位):使用
arm32v7/前缀的镜像,例如arm32v7/nginx - 树莓派4(64位系统)和Jetson Nano:使用
arm64v8/前缀的镜像,例如arm64v8/nginx - 很多官方镜像现在支持多架构(multi-arch),会自动识别你的平台并拉取对应版本,比如
nginx、python、node等
查看当前系统架构:
uname -m
# 输出 aarch64 表示64位ARM,armv7l 表示32位ARM
查找支持ARM架构的镜像,可以到Docker Hub上搜索时留意”ARM”标签。
常见问题解决
问题1:permission denied(权限被拒绝)
如果每次运行docker命令都需要加sudo,非常不方便。解决方法是将当前用户加入docker用户组:
# 创建docker用户组(通常安装时已自动创建)
sudo groupadd docker
# 将当前用户加入docker组
sudo usermod -aG docker $USER
# 重新登录或执行以下命令使组权限生效
newgrp docker
# 测试是否生效(不需要sudo)
docker run hello-world
问题2:Docker pull速度太慢
由于Docker Hub服务器在国外,国内用户拉取镜像速度可能很慢。可以配置镜像加速器:
# 创建或编辑daemon.json配置文件
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
EOF
# 重启docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
问题3:容器时间不正确
ARM设备有时会出现容器内时间与宿主机不一致的问题,可以挂载本地时区文件:
docker run -v /etc/localtime:/etc/localtime:ro -d nginx
一个简单的docker-compose.yml示例
下面是一个使用Docker Compose搭建简单Web服务的例子,包含一个nginx Web服务器和一个Redis缓存服务:
version: '3'
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
restart: always
redis:
image: redis:alpine
ports:
- "6379:6379"
restart: always
创建一个html文件夹,放入一个index.html文件:
<!DOCTYPE html>
<html>
<head><title>Hello Docker</title></head>
<body><h1>Hello from Docker on ARM!</h1></body>
</html>
然后启动所有服务:
docker-compose up -d
查看运行状态:
docker-compose ps
停止所有服务:
docker-compose down
Docker Compose非常适合在嵌入式设备上部署多服务应用,通过一个文件就能管理所有依赖关系和配置。希望这篇教程能帮助你更好地在树莓派和Jetson Nano上使用Docker!