one of the most frustrating things about running with containers is when a container fails immediately on startup.
This can happen for a number of reasons, and not all of them record errors in logfiles to help diagnose them.
However, there’s a fairly easy way to get around this.
Start the container with the “interactive” option and override the “entrypoint” option to execute “/bin/sh”. This will do two things.
- Instead or running the normal container startup, it will start the container executing the command shell
- The “interactive” option holds the container open. Without it, the command shell sees an immediate end-of-file and shuts down the container.
At this point, you can then use the docker/podman “exec” command to dial in to the container like so:
docker exec my_container /bin/sh
At that point, you can inspect files, run utilities, and do whatever is necessary to diagnose/repair the image.
An additional help is also available once you have a tame container running. You can use the docker/podman “cp” command to copy files into and out of the container. Many containers have minimal OS images and have neither an installed text editor nor a package installer to install a text editor. So you can pull a faulty file out of a container, fix it, and push it back. The changes will persist as long as you restart the container and don’t start a new instance from the original image.