Emacs integration for Docker!
Supports docker containers, images, volumes, networks, docker-machine 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 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 popup instructions.
- docker container: cp, diff, inspect, kill, logs, pause, rename, restart, rm, start, stop, unpause
- docker image: inspect, pull, push, rm, tag
- docker network: rm
- docker volume: rm
- docker-machine: create, env, restart, rm, start, stop
- docker-compose: build, create, logs, pull, push, remove, restart, run, start, stop, up
Thanks to magit-popup, all the popups default arguments can be customized. For
example, here is how to customize the arguments for docker-image-run-popup:
(setq docker-image-run-arguments '("-i" "-t" "--rm"))or inside a use-package declaration:
(use-package docker
:ensure t
:bind ("C-c d" . docker)
:custom (docker-image-run-arguments '("-i" "-t" "--rm")))You can also customize these using M-x customize-variable.
| Variable | Description | Default |
|---|---|---|
| docker-command | The docker binary to use | docker |
| docker-container-default-sort-key | Sort key for docker containers | ("Image") |
| docker-container-shell-file-name | Shell to use when entering containers | /bin/bash |
| docker-image-default-sort-key | Sort key for docker images | ("Repository") |
| docker-machine-default-sort-key | Sort key for docker machines | ("Name") |
| docker-network-default-sort-key | Sort key for docker networks | ("Name") |
| docker-run-as-root | Run docker as root | nil |
| docker-volume-default-sort-key | Sort key for docker volumes | ("Driver") |
The following configuration is required (some of it can probably be simplified by using https://github.com/purcell/exec-path-from-shell).
(setenv "PATH" (concat (getenv "PATH") ":/usr/local/bin"))
(setq exec-path (append exec-path '("/usr/local/bin")))
;; Use "docker-machine env box" command to find out your environment variables
(setenv "DOCKER_TLS_VERIFY" "1")
(setenv "DOCKER_HOST" "tcp://10.11.12.13:2376")
(setenv "DOCKER_CERT_PATH" "/Users/foo/.docker/machine/machines/box")
(setenv "DOCKER_MACHINE_NAME" "box")They are very welcome, either as suggestions or as pull requests by opening tickets on the issue tracker.

