¿Cómo compartir mi Docker-Image sin usar Docker-Hub?
Me pregunto dónde se almacenan exactamente las imágenes de Docker en mi máquina host local. ¿Puedo compartir mi Docker-Image sin usar la Docker-Hub
Docker Dockerfile
-Image 'real'? ¿Y qué sucede exactamente cuando 'empujo' mi Docker-Image a Docker-Hub?
Las imágenes de Docker se almacenan como capas del sistema de archivos. Cada comando en Dockerfile crea una capa. También puede crear capas usando docker commit
desde la línea de comando después de realizar algunos cambios (a través de docker run
probablemente).
Estas capas se almacenan de forma predeterminada en /var/lib/docker
. Si bien (teóricamente) podría seleccionar archivos desde allí e instalarlos en un servidor Docker diferente, probablemente sea una mala idea jugar con la representación interna utilizada por Docker.
Cuando envía su imagen, estas capas se envían al registro (el registro de Docker Hub, de forma predeterminada... a menos que etiquete su imagen con otro prefijo de registro) y se almacenan allí. Al extraer, la identificación de la capa se usa para verificar si ya tiene la capa localmente o si es necesario descargarla. Puede utilizar docker history
para echar un vistazo a qué capas (otras imágenes) se utilizan (y, hasta cierto punto, qué comando creó la capa).
En cuanto a las opciones para compartir una imagen sin tener que acceder al registro de Docker Hub, sus mejores opciones son:
docker save
una imagen odocker export
un contenedor. Esto generará un archivo tar en la salida estándar, por lo que querrás hacer algo comodocker save 'dockerizeit/agent' > dk.agent.latest.tar
. Luego puedes usardocker load
odocker import
en un host diferente.Aloje su propio registro privado. - Desactualizado, ver comentarios
Ver la imagen de registro de Docker . Hemos creado un registro respaldado por s3 que puede iniciar y detener según sea necesario (todo el estado se mantiene en el depósito de s3 de su elección), lo cual es trivial de configurar. Esta también es una forma interesante de observar lo que sucede cuando se ingresa a un registro.Utilice otro registro como quay.io (no lo he probado personalmente), aunque cualquier inquietud que tenga con Docker Hub probablemente también se aplicará aquí.
Según este blog , se podría compartir una imagen de Docker sin un registro de Docker ejecutando:
docker save --output latestversion-1.0.0.tar dockerregistry/latestversion:1.0.0
Una vez que se haya completado este comando, se podría copiar la imagen a un servidor e importarla de la siguiente manera:
docker load --input latestversion-1.0.0.tar