¿El reinicio de docker usa la imagen más reciente o con la que se creó el contenedor?

Si creo un contenedor usando una etiqueta / rótulo

docker run --name some_container -d me/my_image

Actualice la imagen con

docker pull me/my_image

Y reinicie el contenedor con

docker restart some_container

¿Qué versión utiliza el nuevo contenedor?

En docker inspect .Image da el ID de la imagen específica, .Config.Image da la etiqueta.

Utiliza la imagen a partir de la cual se creó el contenedor. Esto es bastante fácil de verificar.

Echemos un vistazo al ID de imagen de una imagen desactualizada:

$ docker images alpine:3.2                 REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZEalpine              3.2                 137f13b3ac76        8 seconds ago       5.254 MB

Genial, ahora vamos a crear un contenedor basado en esa imagen:

$ docker create --name test alpine:3.2 sh1011a97c6ed5dc0249eedc133d4f98197b379a40acc43d74f212a3d49f49db09

Podemos ver la imagen en la que se basa el contenedor:

$ docker inspect -f '{{.Image}}' test    137f13b3ac76e253a90cc952c2b5921c41de0f56e8a5833e96f63e6f0c94f228

Ahora sacamos una actualización alpine:3.2:

$ docker pull alpine:3.23.2: Pulling from library/alpineDigest: sha256:1b42caf22e8a6c00e4e7f8c0274495b815336d549317cf694e274832aecf11edStatus: Image is up to date for alpine:3.2

Comprueba que tiene un nuevo ID de imagen:

$ docker images alpine:3.2                 REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZEalpine              3.2                 74e49af2062e        3 days ago          5.254 MB

Pero el contenedor sigue usando el ID de imagen anterior:

$ docker inspect -f '{{.Image}}' test137f13b3ac76e253a90cc952c2b5921c41de0f56e8a5833e96f63e6f0c94f228

Cuando revisas las imágenes, puedes ver la nueva y la vieja colgando:

$ docker imagesREPOSITORY         TAG                  IMAGE ID            CREATED             VIRTUAL SIZE<none>             <none>               137f13b3ac76        51 seconds ago      5.254 MBalpine             3.2                  74e49af2062e        3 days ago          5.254 MB

Si intentó eliminar la imagen anterior, se encontrará con un error:

$ docker rmi 137f13b3ac76Error response from daemon: conflict: unable to delete 137f13b3ac76 (must be forced) - image is being used by stopped container 1011a97c6ed5Error: failed to remove images: [137f13b3ac76]

La imagen se puede eliminar una vez que se elimina el contenedor que se basa en ella.

[EDITAR] Me equivoqué. El contenedor usará la imagen anterior incluso si la reiniciamos.

Necesitamos eliminar y volver a crear el contenedor a partir de la misma etiqueta para usar la nueva revisión de la imagen.