Jetson上的Docker

返回模块3 | 返回目录

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已安装

将用户添加到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

NVIDIA Container Toolkit

安装工具包:

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 LTSfocaldists/focal/pool/stable/
Ubuntu 22.04 LTSjammydists/jammy/pool/stable/
Ubuntu 24.04 LTSnobledists/noble/pool/stable/

然后选择您的架构文件夹:

  • amd64: x86_64(服务器/PC)
  • arm64: ARM 64位,包括Jetson
  • armhf: ARM 32位
  • s390x: IBM z系统

下载五个匹配的包:

  • containerd.io_<版本>_<架构>.deb
  • docker-ce_<版本>_<架构>.deb
  • docker-ce-cli_<版本>_<架构>.deb
  • docker-buildx-plugin_<版本>_<架构>.deb
  • docker-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 docker

Docker基础

Docker Engine提供Docker CLI(docker),允许您从命令行管理镜像、容器、网络和存储。

在学习常用命令之前,请先了解这两个核心概念:

  • 镜像: 一个只读模板,包含运行容器所需的基础操作系统、运行时、库和应用程序代码。
  • 容器: 从镜像创建的运行实例。它有自己的进程和环境,可以独立启动/停止。

简而言之:

Docker镜像就像一个安装包,而容器是一个正在运行的程序实例。

常用命令

1) 显示Docker信息

bash
docker info

2) 显示Docker版本

bash
docker --version

3) 拉取镜像

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 ps

4.2) 列出所有容器

bash
docker ps -a

5) 删除已停止的容器

bash
docker container prune

6) 列出本地镜像

bash
docker images

7) 删除镜像

仅在停止并删除相关容器后才能删除。

bash
docker rmi <镜像名称>

8) 将容器保存为新镜像

bash
docker commit <容器ID> <新镜像名称>:<标签>

根据实际的容器ID选择名称和标签。

9) 停止容器

bash
docker stop <容器ID或名称>

返回模块3