Docker en Jetson

Volver al Módulo 3 | Volver a la Tabla de Contenidos

13. Instalar Docker y Uso Básico

Introducción

Docker es una plataforma de contenedores ligera que empaqueta una aplicación y todas sus dependencias en contenedores portátiles. Le ayuda a ejecutar el mismo entorno en desarrollo, pruebas y producción con mucha menos deriva de configuración.

Docker mejora la consistencia mediante aislamiento de procesos, inicio rápido y uso eficiente de recursos. Es muy adecuado para desarrollo local, implementación en servidores y pipelines de IA multi-servicio.

Instalar Docker en Jetson

1. Instalar Docker CE

bash
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

Agregar clave GPG y repositorio de Docker (el ejemplo a continuación usa el mirror de Aliyun):

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

Verificar la instalación de Docker:

bash
docker --version

Docker instalado

Agregar su usuario al grupo docker (reiniciar shell o ejecutar newgrp):

bash
sudo usermod -aG docker "$USER"
newgrp docker

Después de esto, puede ejecutar comandos Docker sin sudo.

2. Instalar 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

Instalar toolkit:

bash
sudo apt update
sudo apt install -y nvidia-container-toolkit

Habilitar runtime de GPU para Docker:

bash
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

Verificar acceso a GPU dentro de un contenedor:

bash
sudo docker run --rm --runtime=nvidia --gpus all --network host ubuntu nvidia-smi

Si existen restricciones de red en su entorno, use un mirror/proxy al descargar imágenes o paquetes.

3. Instalación manual (APT no disponible)

Si Docker CE no se puede instalar desde el repositorio de Ubuntu, descargue los paquetes .deb manualmente desde:

https://download.docker.com/linux/ubuntu/dists/

Elija su versión de Ubuntu:

Versión de UbuntuCódigoCarpeta de ejemplo
Ubuntu 20.04 LTSfocaldists/focal/pool/stable/
Ubuntu 22.04 LTSjammydists/jammy/pool/stable/
Ubuntu 24.04 LTSnobledists/noble/pool/stable/

Luego seleccione la carpeta de su arquitectura:

  • amd64: x86_64 (Servidor / PC)
  • arm64: ARM 64-bit, incluyendo Jetson
  • armhf: ARM 32-bit
  • s390x: Sistemas IBM z

Descargue los cinco paquetes coincidentes:

  • containerd.io_<versión>_<arquitectura>.deb
  • docker-ce_<versión>_<arquitectura>.deb
  • docker-ce-cli_<versión>_<arquitectura>.deb
  • docker-buildx-plugin_<versión>_<arquitectura>.deb
  • docker-compose-plugin_<versión>_<arquitectura>.deb

Instálelos desde la carpeta donde descargó los archivos:

bash
sudo dpkg -i ./containerd.io_<versión>_<arquitectura>.deb \
  ./docker-ce_<versión>_<arquitectura>.deb \
  ./docker-ce-cli_<versión>_<arquitectura>.deb \
  ./docker-buildx-plugin_<versión>_<arquitectura>.deb \
  ./docker-compose-plugin_<versión>_<arquitectura>.deb

Si faltan dependencias, ejecute:

bash
sudo apt -f install

Verificar estado del servicio Docker:

bash
sudo systemctl status docker

Si Docker no está ejecutándose:

bash
sudo systemctl start docker

Conceptos Básicos de Docker

Docker Engine proporciona la CLI de Docker (docker), que le permite administrar imágenes, contenedores, redes y almacenamiento desde la línea de comandos.

Antes de aprender comandos comunes, revise estos dos conceptos centrales:

  • Imagen: Una plantilla de solo lectura que contiene el SO base, runtime, bibliotecas y código de aplicación necesarios para ejecutar un contenedor.
  • Contenedor: Una instancia en ejecución creada a partir de una imagen; tiene su propio proceso y entorno, y puede iniciarse/detenerese independientemente.

En resumen:

Una imagen Docker es como un paquete de instalación, mientras que un contenedor es una instancia de programa en ejecución.

Comandos Comunes

1) Mostrar información de Docker

bash
docker info

2) Mostrar versión de Docker

bash
docker --version

3) Descargar imagen

bash
docker pull <nombre_imagen>

Si no se especifica etiqueta, Docker descarga latest por defecto.

bash
docker pull <nombre_imagen>:<etiqueta>

4) Ejecutar imagen

bash
docker run <nombre_imagen>

Ejecutar una imagen específica interactivamente:

bash
docker run -it ubuntu:18.04 /bin/bash

Salir de un contenedor en ejecución escribiendo exit.

4.1) Listar contenedores en ejecución

bash
docker ps

4.2) Listar todos los contenedores

bash
docker ps -a

5) Eliminar contenedores detenidos

bash
docker container prune

6) Listar imágenes locales

bash
docker images

7) Eliminar una imagen

Eliminar solo después de detener y eliminar los contenedores relacionados.

bash
docker rmi <nombre_imagen>

8) Guardar un contenedor como nueva imagen

bash
docker commit <id_contenedor> <nombre_nueva_imagen>:<etiqueta>

Elija un nombre y etiqueta según la ID real del contenedor.

9) Detener un contenedor

bash
docker stop <id_o_nombre_contenedor>

Volver al Módulo 3