tag run remove library hub example compose docker

run - docker tag example



¿Cómo crear la etiqueta con nombre y la última en Docker? (6)

Aquí está mi script bash

docker build -t ${IMAGE}:${VERSION} . docker tag ${IMAGE}:${VERSION} ${IMAGE}:latest

Luego puede eliminar imágenes sin etiquetar si reconstruyó la misma versión con

docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

link

o

docker rmi $(docker images | grep "^<none>" | tr -s " " | cut -d'' '' -f3 | tr ''/n'' '' '')

o

Comandos de limpieza: a partir de Docker 1.13 introduce comandos de limpieza. Para eliminar todos los contenedores, imágenes, redes y volúmenes no utilizados:

docker system prune

o individualmente

docker container prune

docker image prune

docker network prune

docker volume prune

Supongamos que tengo una imagen que quiero etiquetar como 0.10.24 (en mi caso es una imagen que contiene Node.js 0.10.24). Construí esa imagen usando un Dockerfile y ejecutando la docker build acoplador y proporcionando una etiqueta usando el parámetro -t .

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 bien y todo está bien.

Pero, y aquí es donde comienzan los problemas, también quiero tener siempre la última imagen etiquetada y latest . Así que supongo que necesito dar dos nombres a la misma imagen.

¿Cómo hago esto? ¿De verdad necesito volver a ejecutar docker build en la misma versión exacta otra vez, pero esta vez usar otra etiqueta, hay alguna mejor opción?



Solo grep la ID de las docker images del docker images :

docker build -t creack/node:latest . ID="$(docker images | grep ''creak/node'' | head -n 1 | awk ''{print $3}'')" docker tag "$ID" creack/node:0.10.24 docker tag "$ID" creack/node:latest

No necesita un archivo temporal y ofrece una salida de compilación completa . Aún puede redirigirlo a /dev/null o a un archivo de registro.


Una vez que tenga su imagen, puede usar

$ docker tag <image> <newName>/<repoName>:<tagName>

1. Crea y etiqueta la imagen con creack / node: latest

$ ID=$(docker build -q -t creack/node .)

2. Agregue una nueva etiqueta

$ docker tag $ID creack/node:0.10.24

3. Puede usar esto y omitir la parte -t ​​de la compilación

$ docker tag $ID creack/node:latest


Variación de la respuesta de Aaron. Usando sed sin archivos temporales

#!/bin/bash VERSION=1.0.0 IMAGE=company/image ID=$(docker build -t ${IMAGE} . | tail -1 | sed ''s/.*Successfully built /(.*/)$//1/'') docker tag ${ID} ${IMAGE}:${VERSION} docker tag -f ${ID} ${IMAGE}:latest


ID=$(docker build -t creack/node .) No funciona para mí ya que ID contendrá el resultado de la compilación.

SO estoy usando este pequeño script BASH:

#!/bin/bash set -o pipefail IMAGE=...your image name... VERSION=...the version... docker build -t ${IMAGE}:${VERSION} . | tee build.log || exit 1 ID=$(tail -1 build.log | awk ''{print $3;}'') docker tag $ID ${IMAGE}:latest docker images | grep ${IMAGE} docker run --rm ${IMAGE}:latest /opt/java7/bin/java -version