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 Docker-Hub
o a Dockerfile
pero la Docker-Image 'real'? ¿Y qué sucede exactamente cuando 'empujo' mi Docker-Image a Docker-Hub?
docker
docker-registry
yaquawa
fuente
fuente
Respuestas:
Las imágenes de Docker se almacenan como capas del sistema de archivos. Cada comando en el Dockerfile crea una capa. También puede crear capas utilizando
docker commit
desde la línea de comandos después de hacer algunos cambios (docker run
probablemente a través de ).Estas capas se almacenan de forma predeterminada en
/var/lib/docker
. Si bien podría (teóricamente) 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 empuja su imagen, estas capas se envían al registro (el registro de Docker Hub, por defecto ... a menos que etiquete su imagen con otro prefijo de registro) y se almacenan allí. Al presionar, la identificación de la capa se usa para verificar si ya tiene la capa localmente o si necesita descargarla. Puede usar
docker history
para ver qué capas (otras imágenes) se usan (y, en cierta medida, qué comando creó la capa).En cuanto a las opciones para compartir una imagen sin pasar al registro de Docker Hub, sus mejores opciones son:
docker save
una imagen odocker export
un contenedor Esto generará un archivo tar a la salida estándar, por lo que le gustaría hacer algo comodocker save 'dockerizeit/agent' > dk.agent.latest.tar
. Luego puede usardocker load
odocker import
en un host diferente.Hospede su propio registro privado. - Anticuado, ver comentarios
Ver la imagen de registro de la ventana acoplable . Hemos creado un registro respaldado por s3 que puede iniciar y detener según sea necesario (todo el estado se mantiene en el bucket de s3 de su elección) que es trivial de configurar. Esta también es una forma interesante de ver lo que sucede cuando se empuja a un registroUse otro registro como quay.io (no lo he probado personalmente), aunque cualquier preocupación que tenga con el Docker Hub probablemente se aplicará aquí también.
fuente
docker save
: cuando inserto una imagen que deriva de otra imagen (digamospython:2.7
) en un registro, la imagen principal no necesita cargarse más de una vez a menos que cambie. ¿Puedo guardar imágenes parciales para lograr una optimización de tamaño de archivo similar? Estoy saltando a través de estos aros porque soy un aficionado con múltiples imágenes y no quiero pagar por un registro privado.docker build
en el host?npm install
... No puedo construir en mi host porque tiene muy poca memoria y este paso siempre falla (ver: github.com/npm/npm/issues/5021 )Según este blog , uno podría compartir una imagen de acoplador sin un registro de acoplador ejecutando:
Una vez que se ha completado este comando, se puede copiar la imagen a un servidor e importarla de la siguiente manera:
fuente
El envío de una imagen acoplable a un servidor remoto se puede realizar en 3 simples pasos:
Localmente, use scp para transferir .tar a remoto
En el servidor remoto, cargue la imagen en la ventana acoplable:
fuente
Si no desea utilizar el Docker Hub, puede alojar su propio repositorio Docker en Artifactory by JFrog:
https://www.jfrog.com/confluence/display/RTF/Docker+Repositories
que luego se ejecutará en sus propios servidores.
Hay otros proveedores de alojamiento disponibles, por ejemplo, CoreOS:
http://www.theregister.co.uk/2014/10/30/coreos_enterprise_registry/
que compró quay.io
fuente