wagoodman / dive

A tool for exploring each layer in a docker image
MIT License
46.68k stars 1.77k forks source link

`arm64` support #387

Open 5HT2 opened 2 years ago

5HT2 commented 2 years ago

Hello, I was wondering if this image would get arm64 support, seeing as Golang is arch-agonistic.

Currently, using the given build instructions I get

WARNING: The requested image's platform (linux/amd64) does not match the detected hostplatform (linux/arm64/v8) and no specific platform was requested

I'm presuming it's still relying on some docker-specific things which can be made platform-agonistic.

jauderho commented 2 years ago

I have working arm images here: https://hub.docker.com/r/jauderho/dive/tags

oshanz commented 2 years ago

thanks @jauderho

docker pull jauderho/dive:latest

docker run --rm -it \
    -v /var/run/docker.sock:/var/run/docker.sock \
    jauderho/dive:latest

works on Alma linux 9 running on Apple M1

tsopeh commented 1 year ago

I've managed to get dive working on arm64 Ubuntu, for dissecting Podman images.

The @oshanz's answer works fine for dissecting Docker images, even on arm64 based Ubuntu. But, I encountered issues as soon as I've tried dissecting the images built by Podman. The above command was working for Docker images, because the tool relies on communication over docker.sock to read the images from the host machine. As I understood, relying on docker.sock is a "bad pattern", and there is no way to replicate it for Podman.

For dissecting Podman images you have to use the dive binary on your host machine. Since there is no arm64 binary available at release, you have to build it by yourself. I managed to get it working, thanks to @barsa-net's gist. All you have to do is to save the Dockerfile (from the gist) in an empty directory, and run the following command (also provided by @barsa-net):

DOCKER_BUILDKIT=1 docker build --target=export-stage --output dist .

You can then install this binary, and make it globally available on your Ubuntu system, by running the following command:

sudo install ./dist/dive /usr/bin/

Done. 🎉

Huge thanks to @barsa-net ❤️ for making the mentioned gist.

JulienORIOL commented 1 year ago

Hey @oshanz

I have some issues about installing dive on my ubuntu 20.04 ARM64 vm. Indeed, when I use your commands, the last message that I get is : "Use "dive [command] --help" for more information about a command."

So it looks like the dive command is now available, but when I write in my terminal the command : dive imageID With the id of the image that I want to analyze, it keeps telling me : "Command 'dive' not found"

Would you have a solution to solve this problem ?