Já que a imagem é um sistema de arquivos, porque não utiliza-la para executa-la como container com o unshare ou chroot?
$ pwd
/tmp
$ mkdir imagem_temp
$ cd imagem_temp/
$ docker image save conversao-temperatura > /tmp/imagem_temp/imagem.tar
$ ls
imagem.tar
$ tar -xvf imagem.tar
blobs/
blobs/sha256/
blobs/sha256/31eafc60a4373164de8e29a0e9ec9f4ed535a63ad543981547e68e197aba044f
blobs/sha256/5acc5099fdd27e1f385e49e606224619bd8385b0917f439bbb7e3d80c8074ea0
blobs/sha256/6c928b5b9bd58f537ddc7fce0c2c9e52cff1e700af199b93e4709aaccc9415be
blobs/sha256/a30a5965a4f7d9d5ff76a46eb8939f58e95be844de1ac4a4b452d5d31158fdea
blobs/sha256/ad6bf598faaf5ee0df76116cc7fbb34f35b8dd5c4603e1a0be30ffbe850cae59
blobs/sha256/d880c24bb82dde7d382ba207895fbc6afd2b6af572918e02c8bd1e58cceeae85
index.json
manifest.json
oci-layout
repositories
$ code .
Deveria exibir no VSCode as layers com seus respectivos arquivos layer.tar. As últimas aulas foram revistas, mas mesmo assim não foi possível exibi-las. A documentação abaixo foi elaborada sem a possibilidade de acompanhamento local de alguns comandos executados.
$ sudo tar -xvf d3e6b3f071229931dc54ed6e11790f02aabbf05fceae8b7934de160b8025a8cc/layer.tar -C /overlay/lower/
$ sudo tar -xvf 8b4983fd43be583c3e4bc213d55ddf2fa1a133796846c8b7f53ccb39243fc9dc/layer.tar -C /overlay/upper/
$ cd /overlay/
$ ls /overlay/lower # filesystem do Ubuntu
bin dev home lib32 libx32 mnt proc run srv tmp var
boot etc lib lib64 media opt root sbin sys usr
$ ls /overlay/upper # filesystem da aplicação
app etc root tmp usr var
$ sudo mount -t overlay -o lowerdir=/overlay/lower/,upperdir:/overlay/upper/,workdir:/overlay/work/ overlay /overlay/merged/
$ cd /overlay/merged
# mesma imagem construida a partir do docker
$ ls
app boot etc lib lib64 media opt root sbin sys usr
bin dev home lib32 libx32 mnt proc run srv tmp var
# execução do processo de forma isolada somente com o linux, fora do docker
$ sudo unshared --pid --fork --mount-proc chroot /overlay/merged/
root@fsv-desktop:/ # ls
root@fsv-desktop:/ # node -v
v20.9.0
root@fsv-desktop:/ # cd app/
root@fsv-desktop:/ # node server.js
Servidor rodando na porta 8080
root@fsv-desktop:/ # exit
$ sudo umount overlay/merged/
$ sudo rm -rf /overlay/
$ sudo rm -rf /tmp/imagem_temp/