doomemacs/modules/tools/docker
2019-05-05 19:17:02 -03:00
..
config.el Lazy-load docker.el & refactor evil-initial-state 2018-09-09 09:52:23 -04:00
packages.el
README.org Make plugins a simple list 2019-05-05 19:17:02 -03:00

tools/docker

Description

This package allows you to manipulate docker images, containers & more from Emacs.

Provides a major mode `dockerfile-mode' for use with the standard `Dockerfile' file format. Additional convenience functions allow images to be built easily.

docker-tramp.el offers a TRAMP method for Docker containers.

Module Flags

This module provides no flags.

Prerequisites

This modules assumes `docker`, `docker-compose` and `docker-machine` binaries are installed and accessible from your PATH.

TODO: Features

Docker control

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

Supported commands

  • 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, config, 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.

TRAMP

Offers the TRAMP method `docker` to access running containers

C-x C-f /docker:user@container:/path/to/file

where user is the user that you want to use (optional) container is the id or name of the container

Configuration

Popups

Thanks to [magit-popup](https://github.com/magit/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.

### Others

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")`

dockerfile-mode

By default, the keyword completion function detects the docker-compose version of the current buffer and suggests the appropriate keywords.

You can change the candidates offered by the backend by customizing docker-compose-keywords

Troubleshooting

Tramp hangs on Alpine container

Busyboxes built with the `ENABLE_FEATURE_EDITING_ASK_TERMINAL' config option send also escape sequences, which `tramp-wait-for-output' doesn't ignores correctly. Tramp upstream fixed in [98a5112][] and is available since Tramp>=2.3.

For older versions of Tramp you can dump [docker-tramp-compat.el][] in your `load-path' somewhere and add the following to your `init.el', which overwrites `tramp-wait-for-output' with the patch applied:

(require 'docker-tramp-compat)

[98a5112]: http://git.savannah.gnu.org/cgit/tramp.git/commit/?id=98a511248a9405848ed44de48a565b0b725af82c [docker-tramp-compat.el]: https://github.com/emacs-pe/docker-tramp.el/raw/master/docker-tramp-compat.el