dockit
dockit copied to clipboard
Jump into a Docker image.
dockit: Overlay a Docker image onto the current directory
$ touch file1 file2
$ ls
file1 file2
$ dockit alpine
Using default tag: latest
latest: Pulling from library/alpine
Digest: sha256:72c42ed48c3a2db31b7dafe17d275b634664a708d901ec9fd57b1529280f01fb
Status: Image is up to date for alpine:latest
docker.io/library/alpine:latest
/docked # ls
file1 file2
Features
- Seamless but separated: Changes in the
/dockeddirectory stay local to the container, letting you install, delete, and otherwise make a mess of things without harming the real directory. - Consistent permissions:
dockittries to set the ownership of files in the docked directory to a sensible user. This defaults to theUSERspecified in the image, if any, androotif not. - Easy export: The
undockcommand exports files you select back to the host.
Caveats
- To allow for the exporting of files, the
/hostdirectory is mounted read-write. Changes inside that directory will impact the real host directory. Maybe don’trm -rf /. - To fix permissions,
dockitruns a recursivechownon the overlay filesystem in/docked. If youdockitfrom a large directory, this could take a while. If your version ofoverlayfsdoesn’t support themetaonlymount option, this will take even longer, and will result in a temporary copy of all the files in that directory inside a Docker volume.
Installation
git clone https://github.com/awkspace/dockit
cd dockit
sudo ./install.sh
The included installer script will install dockit to /usr/local. If that
doesn’t meet your needs, you can also run it directly from the cloned copy as
bin/dockit.
Usage
dockit - Run a Docker image overlaid on the current directory
Usage: dockit [options] <image>
Options:
-h this help text
-d detach; run in background, useful for scripting
-n no mount; just run the image
-i skip ignores; do not remove files ignored by VCS or Docker
-m <user> mount directory as <user> instead of default
-r <user> run shell as <user> instead of default
Exporting
If you’ve produced something inside the container that you’d like to move back
to the host, you can do so using the undock command from within the container.
/docked # undock
Usage: undock <file1> [<file2>]...
License
dockit, such as it is, is licensed under MIT.