celaut-project / nodo

Service Orchestration for Distributed Networks
1 stars 0 forks source link

Non deterministic constructed Layers. #1

Closed jse07 closed 3 years ago

jse07 commented 4 years ago

SharedScreenshot

jse07 commented 4 years ago

Docker inspect nos proporciona una lista de los DiffId de las capas.

jse07 commented 3 years ago

Workspace 1_001

https://stackoverflow.com/questions/4309882/device-number-in-stat-command-output

Haciendo git clone, la última capa no es determinista porque el atributo Device de cada archivo no lo es.

jse07 commented 3 years ago

Workspace 1_001

No es el problema previamente comentado ya que sucede lo mismo con archivos fuera de la capa indeterminista. El resto de las capas poseen el mismo hash todo el tiempo y no coinciden en la propiedad stat/Device de sus archivos.

jse07 commented 3 years ago

Se pueden encontrar hashes distintas de las capas al construir la imagen, realizar docker inspect, u obteniendo un tar de la imagen con docker save. En ninguna de ellas, tras eliminar la imagen, vuelven a salir las mismas hashes. Bien sea el DiffId cuaquiera de las tres opciones, este debe de tener en cuenta el json dentro de la carpeta de la capa, en el que se especifica la fecha de creacion de la misma. Si Docker tiene en cuenta esto a la hora de obtener el DiffId, es imposible lograr en algun momento el determinismo, a no ser que calculemos por nosotros mismos el DiffId.

Captura

jse07 commented 3 years ago

https://windsock.io/explaining-docker-image-ids/

jse07 commented 3 years ago

https://github.com/opencontainers/image-spec/issues/805