O docker restart usa a imagem mais recente ou aquela com a qual o contêiner foi criado?

Se eu criar um contêiner usando uma tag / label

docker run --name some_container -d me/my_image

Atualize a imagem com

docker pull me/my_image

E reinicie o contêiner com

docker restart some_container

Qual versão o novo contêiner usa?

Em docker inspect .Image dá o id da imagem específica, .Config.Image dá o rótulo.

Ele usa a imagem a partir da qual o contêiner foi criado. Isso é muito fácil de verificar.

Vamos dar uma olhada no ID da imagem para uma imagem desatualizada:

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

Legal, agora vamos criar um contêiner baseado nessa imagem:

$ docker create --name test alpine:3.2 sh1011a97c6ed5dc0249eedc133d4f98197b379a40acc43d74f212a3d49f49db09

Podemos ver a imagem de que o contêiner é baseado:

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

Agora nós puxamos uma atualização alpine:3.2:

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

Veja se ele tem um novo ID de imagem:

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

Mas o contêiner ainda está usando o ID de imagem mais antigo:

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

Ao verificar as imagens, você pode ver a nova e a antiga pendurada:

$ 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

Se você tentou excluir a imagem antiga, você será recebido com um erro:

$ 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]

A imagem pode ser excluída assim que o contêiner baseado nela for removido.

[Editar] eu estava errado. O contêiner usará a imagem anterior, mesmo que a reiniciemos.

Precisamos excluir e recriar o contêiner da mesma tag para usar a nova revisão da imagem.