$ 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
- Seamless but separated: Changes in the
/docked
directory stay local to the container, letting you install, delete, and otherwise make a mess of things without harming the real directory. - Consistent permissions:
dockit
tries to set the ownership of files in the docked directory to a sensible user. This defaults to theUSER
specified in the image, if any, androot
if not. - Easy export: The
undock
command exports files you select back to the host.
- To allow for the exporting of files, the
/host
directory is mounted read-write. Changes inside that directory will impact the real host directory. Maybe don’trm -rf /
. - To fix permissions,
dockit
runs a recursivechown
on the overlay filesystem in/docked
. If youdockit
from a large directory, this could take a while. If your version ofoverlayfs
doesn’t support themetaonly
mount option, this will take even longer, and will result in a temporary copy of all the files in that directory inside a Docker volume.
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
.
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
-l log session with script
-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
-u update image before mounting
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>]...
dockit
, such as it is, is licensed under MIT.