Up until a few weeks ago, I had never messed with Docker. Not that I had anything against it per se, but never before had I felt the need to isolate my work in containers that can be readily built up and torn down.
Docker and its helpful companion Docker Compose come with a rich command-line interface. Nonetheless, I don’t want to leave Emacs for simple tasks such as building a Docker image or preparing the containers with Docker Compose.
Fortunately, the Emacs ecosystem is ready to help. Four packages have improved my workflow with Docker:
The first two packages add syntax highlighting, completion and a bunch of useful
key bindings to work with Dockerfile
and docker-compose.yml
.
The real magic, though, happens with docker-tramp
. The beauty of interacting
directly with the contents of a container is impressive. Combine docker-tramp
with the handy completion of counsel and
the power of Dired and you might feel like Henry Dorsett Case in his ecstatic
hunt for the Neuromancer.
Through docker-tramp
I can also run EShell on any available container and that
is where eshell-bookmark
shines. I just have to bookmark a remote EShell
buffer and use counsel-bookmark
to jump back to it. Managing containers hardly
gets any faster than this.
A little advice if you use both counsel
and eshell-bookmark
: do
not set counsel-bookmark-avoid-dired
to t
, otherwise selecting a bookmark
with counsel-bookmark
will take you to counsel-find-file
instead of opening
the desired EShell buffer.