Emacs integration for Docker!
Supports docker containers, images, volumes, networks, contexts and docker-compose.
The recommended way to install docker.el is through MELPA.
Here is a example use-package configuration:
(use-package docker
:ensure t
:bind ("C-c d" . docker))
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.
- docker container: attach, cp, diff, inspect, kill, logs, pause, rename, restart, rm, start, stop, unpause
- docker image: 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.
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-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-run-default-args | Base arguments to use for docker run | ("-i" "-t" "--rm") |
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-run-async-with-buffer-function | Function used to run programs with buffers | Too complex to show |
docker-show-messages | If non-nil message docker commands | t |
docker-show-status | If non-nil compute status | t |
docker-volume-columns | Columns definition for volumes | Too complex to show |
docker-volume-default-sort-key | Sort key for volumes | ("Driver") |
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
`("^postgres" ("-e POSTGRES_PASSWORD=postgres" . ,docker-image-run-default-args)))
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
.
If vterm is installed, it'll be used for any commands that needs a running
buffer (for example docker run
, docker logs
, etc).
They are very welcome, either as suggestions or as pull requests by opening tickets on the issue tracker.