While building a "swiss army knife container image" might seem like a good idea, there are always more things to add and at some point, such image becomes too big and too hard to maintain.
A better option is to use an image such as infuser
. infuser
is built around tea
CLI which automatically installs any tool that you invoke. Let's say you run curl
in a container, but it's not installed. No problem, tea
will first install it and then invoke your command:
docker run --rm -it ghcr.io/teaxyz/infuser
...
# curl is not installed...
tea $ curl https://google.com
# installed: ~/.tea/curl.se/ca-certs/v2023.5.30
# installed: ~/.tea/curl.se/v8.2.1
# installed: ~/.tea/openssl.org/v1.1.1u
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>
# ... but worked anyway!
tea $
Original source: A Collection of Docker Images To Solve All Your Debugging Needs