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: 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-machine: create, env, restart, rm, start, stop
- docker-compose: build, create, down, exec, logs, pull, push, remove, restart, run, start, stop, up
You can also enter dired
or open a file inside a container or volume.
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. Podman is also supported | 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.