Jetson上的Docker
13. 安装Docker和基本使用
简介
Docker是一个轻量级容器平台,将应用程序及其所有依赖项打包成可移植的容器。它帮助您在开发、测试和生产环境中以更少的配置漂移运行相同的环境。
Docker通过进程隔离、快速启动和高效的资源使用来提高一致性。它非常适合本地开发、服务器部署和多服务AI管道。
在Jetson上安装Docker
1. 安装Docker CE
bash
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common添加Docker GPG密钥和仓库(下面的示例使用阿里云镜像):
bash
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /usr/share/keyrings/docker-ce.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] \
https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io验证Docker安装:
bash
docker --version
将用户添加到docker组(重新启动shell或运行newgrp):
bash
sudo usermod -aG docker "$USER"
newgrp docker之后,您可以在不使用sudo的情况下运行Docker命令。
2. 安装NVIDIA Container Toolkit
bash
distribution=$(. /etc/os-release; echo "$ID$VERSION_ID")
curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey \
| sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
安装工具包:
bash
sudo apt update
sudo apt install -y nvidia-container-toolkit为Docker启用GPU运行时:
bash
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker验证容器内的GPU访问:
bash
sudo docker run --rm --runtime=nvidia --gpus all --network host ubuntu nvidia-smi如果您的环境存在网络限制,请在拉取镜像或包时使用镜像/代理。
3. 手动安装(APT不可用时)
如果无法从Ubuntu仓库安装Docker CE,请手动下载.deb包:
https://download.docker.com/linux/ubuntu/dists/
选择您的Ubuntu版本:
| Ubuntu版本 | 代码 | 示例文件夹 |
|---|---|---|
| Ubuntu 20.04 LTS | focal | dists/focal/pool/stable/ |
| Ubuntu 22.04 LTS | jammy | dists/jammy/pool/stable/ |
| Ubuntu 24.04 LTS | noble | dists/noble/pool/stable/ |
然后选择您的架构文件夹:
amd64: x86_64(服务器/PC)arm64: ARM 64位,包括Jetsonarmhf: ARM 32位s390x: IBM z系统
下载五个匹配的包:
containerd.io_<版本>_<架构>.debdocker-ce_<版本>_<架构>.debdocker-ce-cli_<版本>_<架构>.debdocker-buildx-plugin_<版本>_<架构>.debdocker-compose-plugin_<版本>_<架构>.deb
从下载文件的文件夹安装:
bash
sudo dpkg -i ./containerd.io_<版本>_<架构>.deb \
./docker-ce_<版本>_<架构>.deb \
./docker-ce-cli_<版本>_<架构>.deb \
./docker-buildx-plugin_<版本>_<架构>.deb \
./docker-compose-plugin_<版本>_<架构>.deb如果缺少依赖项,请运行:
bash
sudo apt -f install检查Docker服务状态:
bash
sudo systemctl status docker如果Docker未运行:
bash
sudo systemctl start dockerDocker基础
Docker Engine提供Docker CLI(docker),允许您从命令行管理镜像、容器、网络和存储。
在学习常用命令之前,请先了解这两个核心概念:
- 镜像: 一个只读模板,包含运行容器所需的基础操作系统、运行时、库和应用程序代码。
- 容器: 从镜像创建的运行实例。它有自己的进程和环境,可以独立启动/停止。
简而言之:
Docker镜像就像一个安装包,而容器是一个正在运行的程序实例。
常用命令
1) 显示Docker信息
bash
docker info2) 显示Docker版本
bash
docker --version3) 拉取镜像
bash
docker pull <镜像名称>如果没有指定标签,Docker默认拉取latest。
bash
docker pull <镜像名称>:<标签>4) 运行镜像
bash
docker run <镜像名称>以交互方式运行特定镜像:
bash
docker run -it ubuntu:18.04 /bin/bash通过输入exit退出的运行中的容器。
4.1) 列出运行中的容器
bash
docker ps4.2) 列出所有容器
bash
docker ps -a5) 删除已停止的容器
bash
docker container prune6) 列出本地镜像
bash
docker images7) 删除镜像
仅在停止并删除相关容器后才能删除。
bash
docker rmi <镜像名称>8) 将容器保存为新镜像
bash
docker commit <容器ID> <新镜像名称>:<标签>根据实际的容器ID选择名称和标签。
9) 停止容器
bash
docker stop <容器ID或名称>