Supongamos que tengo una imagen que quiero etiquetar 0.10.24
(en mi caso es una imagen que contiene Node.js 0.10.24). Construí esa imagen usando un Dockerfile y ejecutándolo docker build
y proporcionando una etiqueta usando el -t
parámetro.
Espero que algún día tenga versiones adicionales de esa imagen, así que volveré a ejecutar el proceso, solo con otro nombre de etiqueta.
Hasta aquí todo bien. Esto funciona muy bien y todo está bien.
Pero, y aquí es donde comienzan los problemas, también quiero tener siempre el anuncio etiquetado con la imagen más nueva latest
. Así que supongo que necesito dar dos nombres a la misma imagen.
¿Cómo hago esto? ¿Realmente necesito volver a ejecutar docker build
exactamente la misma versión, pero esta vez use otra etiqueta, ¿hay una mejor opción?
Respuestas:
Puede tener varias etiquetas al crear la imagen:
Referencia: https://docs.docker.com/engine/reference/commandline/build/#tag-image-t
fuente
:latest
porción, ya que ese es el valor predeterminado:docker build -t whenry/fedora-jboss -t whenry/fedora-jboss:v2.1 .
Una vez que tenga su imagen, puede usar
Cree y etiquete la imagen con creack / node: último
Agregar una nueva etiqueta
Puede usar esto y omitir la parte -t de la compilación
fuente
creack/node:latest
, luego puedes etiquetarla condocker tag creack/node:latest creack/node:0.10.24
REV=$(hg identify --num)
docker tag -f $ID creack/node:latest
para forzar el etiquetado con la última (en caso de que una imagen anterior ya fuera la última)Aquí está mi script bash
Luego puede eliminar las imágenes sin etiquetar si reconstruyó la misma versión con
enlace
o
o
Comandos de limpieza :
Docker 1.13 presenta los comandos de limpieza. Para eliminar todos los contenedores, imágenes, redes y volúmenes no utilizados:
o individualmente:
fuente
awk '{print $3}'
funciona, pero noawk "{print $3}"
así que el comando que uso esdocker rmi $(docker images -a | grep "^<none>" | awk '{print $3}')
-f
opción ya no existe endocker tag
. El uso es justodocker tag IMAGE[:TAG] IMAGE[:TAG]
docker push
despuésdocker build & docker run
, ¿empuja con:latest
o${VERSION}
?ID=$(docker build -t creack/node .)
no funciona para mí yaID
que contendrá el resultado de la compilación.Así que estoy usando este pequeño script BASH:
fuente
-q
/--quiet
abuild
como se menciona en esta respuestaSimplemente grep la identificación de
docker images
:No necesita ningún archivo temporal y proporciona una salida de compilación completa . Todavía puede redirigirlo a
/dev/null
un archivo de registro.fuente
Variación de la respuesta de Aaron. Usando sed sin archivos temporales
fuente