Silex
docker.el
Emacs Lisp

Manage docker from Emacs.

Last updated Jul 9, 2026
824
Stars
83
Forks
6
Issues
+1
Stars/day
Attention Score
89
Topics
Language breakdown
Emacs Lisp 100.0%
Files click to expand
README

MELPA MELPA Stable CI status

docker.el

Emacs integration for Docker!

Supports docker containers, images, volumes, networks, contexts and docker-compose.

Screenshots

List images

Images list

Image run

Image run

Installation

The recommended way to install docker.el is through MELPA.

Here is a example use-package configuration:

elisp
(use-package docker
  :ensure t
  :bind ("C-c d" . docker))

Quickstart

Use M-x docker, select a resource then mark or unmark items using the following keybindings (for more marking possibilities, check out https://github.com/politza/tablist):

| Binding | Description | |--------------------|----------------------| | ? | List actions | | l | Configure listing | | m | Mark item | | u | Unmark item | | t | Toggle marks | | U | Unmark all | | s | Sort | | * r | Mark items by regexp | | < | Shrink column | | > | Enlarge column | | C-c C-e | Export to csv |

Then select an action and follow the instructions.

Supported commands

  • docker container: attach, cp, diff, exec, inspect, kill, logs, pause, rename, restart, rm, start, stop, unpause
  • docker image: history, inspect, pull, push, rm, run, tag
  • docker network: rm
  • docker volume: rm
  • docker context: ls, use
  • docker-compose: build, config, create, down, exec, logs, pause, pull, push, remove, restart, run, start, stop, unpause, up
You can also enter dired or open a file inside a container or volume.

Customizations

Thanks to transient, all the transients arguments can be set temporarily or permanently. See https://magit.vc/manual/transient/Saving-Values.html#Saving-Values for more information.

There are also hidden items (e.g on M-x docker where you could specify the host or TLS settings), see https://magit.vc/manual/transient/Enabling-and-Disabling-Suffixes.html for more information.

Here is a list of other customizations you can set:

| Variable | Description | Default | |---------------------------------------|--------------------------------------------|----------------------| | docker-command | The docker binary to use | docker | | docker-compose-command | The docker-compose binary to use | docker-compose | | docker-container-columns | Columns definition for containers | /bin/sh | | docker-container-default-sort-key | Sort key for containers | ("Image") | | docker-container-exec-custom-args | Custom arguments to use for docker exec | nil | | docker-container-exec-default-args | Base arguments to use for docker exec | ("-i" "-t") | | docker-container-shell-file-name | Shell to use when entering containers | /bin/sh | | docker-container-tramp-method | Tramp prefix when connecting to containers | docker | | docker-image-columns | Columns definition for images | Too complex to show | | docker-image-default-sort-key | Sort key for images | ("Repository") | | docker-image-history-columns | Columns definition for image history | Too complex to show | | docker-image-history-default-sort-key | Sort key for image history | ("Created" . t) | | docker-image-run-default-args | Base arguments to use for docker run | ("-i" "-t" "--rm") | | docker-inspect-view-mode | Mode used in docker inspect buffers | Too complex to show | | docker-network-columns | Columns definition for networks | Too complex to show | | docker-network-default-sort-key | Sort key for networks | ("Name") | | docker-pop-to-buffer-action | Action for docker-utils-pop-to-buffer | nil | | docker-run-as-root | Runs docker as root when enabled | nil | | docker-terminal-backend | Terminal backend for live buffers | auto | | docker-show-messages | If non-nil message docker commands | t | | docker-show-status | When to compute status | local-only | | docker-volume-columns | Columns definition for volumes | Too complex to show | | docker-volume-default-sort-key | Sort key for volumes | ("Driver") |

Changing the default arguments for docker run

You can match on the repository name for an image to customize the initial infix arguments via docker-image-run-custom-args:

(add-to-list
   'docker-image-run-custom-args
   (&quot;^postgres&quot; (&quot;-e POSTGRES_PASSWORD=postgres&quot; . ,docker-image-run-default-args)))</code></pre>

So when docker run is called on an image whose repository name matches the regular expression ^postgres, the option "-e POSTGRES_PASSWORD=postgres" will appear as set along with the defaults specified by docker-image-run-default-args.

The same mechanism is available for docker exec via docker-container-exec-custom-args and docker-container-exec-default-args, except the regular expression is matched against the container name instead of the image repository.

Terminal support

Commands that need a running buffer (for example docker run, docker logs, etc) use the backend selected by docker-terminal-backend. When set to auto, it prefers eat, then ghostel, then vterm, then shell.

Non-interactive streaming buffers (for example docker logs -f`) always use a shell buffer so output can be rendered with ANSI color and kept read-only.

Contributions

They are very welcome, either as suggestions or as pull requests by opening tickets on the issue tracker.

🔗 More in this category

© 2026 GitRepoTrend · Silex/docker.el · Updated daily from GitHub