
Crear un contenedor docker a partir de un archivo docker
Para aquellos que acaban de empezar con Docker y para que yo tenga un lugar fácil para volver y obtener esta información básica… quería crear una hoja de trucos. La versión electrónica de este documento se puede encontrar en https://wp.me/p6B4pe-oP5
el $ y el # en las declaraciones de abajo no se escriben realmente. Son símbolos para mostrarte en qué prompt de comando debes estar. el prompt $ es el prompt de Docker VM. El # es el prompt de comandos del contenedor Bash.
1) crear un contenedor desde la imagen de ubuntu (más reciente) y ejecutar un terminal bash. Esto le dice a docker que utilice la última imagen de ubuntu disponible desde el repositorio por defecto (normalmente en línea) ejecute una sesión interactiva y me deje en la línea de comandos bash. El -i -t dice que te mantenga conectado al nuevo contenedor para que puedas trabajar con él «interactivamente» Fíjate que tu prompt de comandos cambió a un #. Esto es porque estás dentro del contenedor que no tiene docker instalado. Es sólo un contenedor con Ubuntu 16.
4) Verás que ahora tienes el prompt $. Esto muestra que ya no está en el contenedor. Usted está de vuelta en el host de Docker. Ahora tenemos que ver cuál es nuestro ID de contenedor para el contenedor que acabamos de trabajar. la -l [L minúscula] representa la última imagen que creó. Necesitamos obtener el ID del contenedor para poder trabajar con él. Toma nota de tu ID de contenedor ejecutando el siguiente comando :
Crear imagen docker
Proporcionamos algunos argumentos extra a CMake para asegurar que CMake y GCC puedan encontrar todas las librerías CUDA necesarias. También le decimos al compilador que permita la vinculación incluso si hay símbolos no definidos de bibliotecas como nvcuvid que aún no están disponibles. Estos estarán disponibles en tiempo de ejecución utilizando el kit de herramientas de contenedores de NVIDIA.
Las imágenes Docker pueden llegar a ser muy grandes y convertirse en un problema cuando se tiran por la red o se empujan en dispositivos con almacenamiento limitado (como Jetson Nano). Aquí tienes algunos consejos para mantener el tamaño de tu imagen pequeño:
Ahora que has creado tu imagen, necesitas compartirla en un registro para que pueda ser descargada y ejecutada en cualquier máquina de destino. Un registro es una aplicación sin estado, del lado del servidor, que almacena y permite distribuir imágenes Docker.
Hay situaciones en las que no querrás que tu imagen esté disponible públicamente. En este caso, necesitas crear tu propio Registro Docker privado. Puedes obtener repos privados de Docker, o de muchos otros proveedores de terceros.
Contenedor de ejecución Docker
¡Vaya! Eso es un trabalenguas. En palabras más sencillas, Docker es una herramienta que permite a los desarrolladores, administradores de sistemas, etc., desplegar fácilmente sus aplicaciones en una caja de arena (llamada contenedores) para que se ejecuten en el sistema operativo anfitrión, es decir, Linux. La principal ventaja de Docker es que permite a los usuarios empaquetar una aplicación con todas sus dependencias en una unidad estandarizada para el desarrollo de software. A diferencia de las máquinas virtuales, los contenedores no tienen una gran sobrecarga y, por tanto, permiten un uso más eficiente del sistema y los recursos subyacentes.
El estándar de la industria hoy en día es utilizar máquinas virtuales (VM) para ejecutar aplicaciones de software. Las máquinas virtuales ejecutan aplicaciones dentro de un sistema operativo invitado, que se ejecuta en un hardware virtual alimentado por el sistema operativo anfitrión del servidor.
Las máquinas virtuales son excelentes para proporcionar un aislamiento total de los procesos de las aplicaciones: hay muy pocas maneras de que un problema en el sistema operativo anfitrión pueda afectar al software que se ejecuta en el sistema operativo invitado, y viceversa. Pero este aislamiento tiene un gran coste: la sobrecarga computacional que supone virtualizar el hardware para que lo utilice un sistema operativo invitado es considerable.
Tutorial de Docker
Si NO estás usando una máquina Linux, necesitas un servidor virtualizado. Si instalas VirtualBox, otras herramientas como el boot2docker de Mac pueden gestionarlo sin problemas por ti. Visita el sitio de descarga de VirtualBox y elige la versión para tu máquina. Descárgalo e instálalo. No te preocupes por ejecutarlo.
También necesitas Docker, que sólo funciona en máquinas de 64 bits. Consulta https://docs.docker.com/installation/#installation para conocer los detalles de la configuración de Docker para tu máquina. Antes de continuar, verifique que puede ejecutar los comandos de Docker desde el shell. Si usas boot2docker, necesitas ejecutarlo primero.
Ejecutar aplicaciones con privilegios de usuario ayuda a mitigar algunos riesgos (ver, por ejemplo, un hilo en StackExchange). Por lo tanto, una mejora importante del Dockerfile es ejecutar la aplicación como un usuario no root:
Si lo hacemos bien, ya contiene un directorio BOOT-INF/lib con los JARs de dependencia en él, y un directorio BOOT-INF/classes con las clases de la aplicación en él. Fíjate que usamos la propia clase principal de la aplicación: hello.Application. (Esto es más rápido que usar la indirección proporcionada por el lanzador de JARs gordos).
