Docker

Start, stop, log and shell into containers from the panel

palupdated 2026-10-27DeveloperIn pal's registry

Open in pal

In pal's registry: the button shows it in pal, which asks before installing; the command does the same from a terminal. This page can't see what your pal has installed.

Docker: Containers, running first, with their ports (a stopped one's status) and a state tag
Containers, running first, with their ports (a stopped one's status) and a state tag
Docker: What a running container can do: stop, logs, shell, restart, remove
What a running container can do: stop, logs, shell, restart, remove
Docker: The last log lines of a container, opened in the panel (cmd+L): nginx starting yesterday, today's requests under it
The last log lines of a container, opened in the panel (cmd+L): nginx starting yesterday, today's requests under it
Docker: Running an image: the name and the ports, then docker run -d
Running an image: the name and the ports, then docker run -d
Docker: A container's detail (cmd+I): its Compose project and image, the name, its state and status, then id, command, ports, mounts and networks
A container's detail (cmd+I): its Compose project and image, the name, its state and status, then id, command, ports, mounts and networks
1 of 5

What it does

Your Docker containers, images and Compose projects in one list: start and stop containers, read their logs in the panel, or open a shell in a terminal.

  • Every container, running ones first, with its image, ports and state; cmd+i shows it as a page
  • enter starts or stops a container (stopping asks first)
  • cmd+l shows its recent logs in the panel; cmd+t opens a shell in a terminal
  • Run an image with an optional name and ports
  • Compose projects: up, down, restart, logs, open the folder
  • Works with Podman too (a setting)

Palettes 3

  • Docker Containersdockerlive

    Every container, running first: start, stop, restart, logs, a shell, remove.

    • ↵Stop a running container, start a stopped one
    • ⌘LLogs (the line count typed in the bar; 200 when blank)
    • ⌘TShell in a terminal, or the command typed in the bar
    • ⌘⇧RRestart
    • ⌘DRemove
    • ⌘CCopy id
  • Docker Imagesimageslive

    Local images: run one (name and ports typed in the bar), remove, copy the id.

    • ↵Run, with the name and ports typed in the bar (both optional)
    • ⌘CCopy id
    • ⌘DRemove
  • Compose Projectscomposelive

    Compose projects docker knows of: up, down, restart, logs.

    • ↵Up
    • ⌘LLogs
    • ⌘⇧RRestart
    • ⌘DDown
    • ⌘OOpen project folder

Actions

  • StopA running container; asks first.↵
  • StartA stopped container.↵
  • LogsThe last 200 lines (or the count typed in the bar), stdout and stderr, in the panel.⌘L
  • ShellA terminal running docker exec (bash when the image has it, sh otherwise), or the command typed in the bar, kept open until Enter.⌘T
  • Restart⌘⇧R
  • Removedocker rm -f, docker rmi or compose down; asks first.⌘D
  • Copy id⌘C
  • RunAn image: the bar takes a name and host:container ports (both optional, comma separated ports), then docker run -d.↵
  • UpA Compose project: compose up -d.↵
  • DownStops and removes the project's containers and networks; asks first.⌘D
  • Open project folder⌘O

Settings

Extension, [extensions.docker]

binary
docker text

The CLI to run: docker, or podman (its docker-compatible commands are what is used).

ttl
10s number

Seconds a listing stays good for: the palettes list again on show only once the rows are older than this. Read when the extension loads.

terminal
Auto select

Which terminal Shell opens. Auto picks the first installed of kitty, Ghostty, Alacritty, iTerm2, Terminal. On Linux $TERMINAL, else kitty, foot, alacritty, xterm. One of auto, kitty, Terminal, iTerm2, Ghostty, Alacritty.

Defaults shown. Change them in pal's settings window or in the config file.

The README

Everything Docker does, key by key, from the extension's own README.md

Docker

Three live palettes over the docker CLI (docker ps -a, docker images, docker compose ls -a, each with --format '{{json .}}'), listed again when the panel shows once their rows are older than ttl. Podman works through the same commands: set binary to podman, or install its docker alias. Without the binary, or with the daemon not answering, each palette is one inert hint row that says which.

Palettes

Docker Containers (docker): every container, the running ones first in a Running section, the rest under Stopped. The row is the container's name, its image the subtitle; on the right the published ports, compact (80, 443; 8080:80 when host and container differ; a stopped one's status, Exited (0) 3 days ago, instead) and a state tag (running green, exited grey, paused and restarting amber, created blue, dead red). The id, the image and the Compose project are keywords, so nginx or the project name finds the container from the root. The detail pane leads with the Compose project and image, the name, the state and docker's status as chips, then lists id, command, created, ports, mounts and networks.

Docker Images (images): repository:tag (the id for an untagged image), the id as subtitle, size and age on the right. While the cursor is on an image the search bar shows two fields after the query, the name and the ports (host:container pairs, comma separated; Tab into them), both optional: Enter runs docker run -d [--name] [-p …] <image>; a malformed port is refused under the field. A pick that arrives without the fields (a hotkey, a bare pal run) asks for them in a form instead.

Compose Projects (compose): every project docker knows of, its folder as subtitle, its containers' states as one tag (4 running, 1 exited; running green, a mix amber, exited grey). Every config file of the project is passed with -f.

A command keeps the panel open and lists again, with a toast naming what happened. A command still running after 8 s (a stop whose process ignores SIGTERM, a compose up that pulls) is left to finish on its own and the toast says so; cmd+r later shows the outcome. A failed command keeps the panel open with docker's last stderr line.

Keyboard

Containers:

keys action
enter Stop a running container (asks first), Start a stopped one
cmd+l Logs: docker logs --tail <lines>, stdout and stderr, in the panel; argument lines from the bar (200 when blank)
cmd+t Shell: a terminal running docker exec -it <id> (bash when the image has it, sh otherwise); argument command from the bar runs that instead, the window kept until Enter; running containers only
cmd+shift+r Restart
cmd+d Remove: docker rm -f, after a confirm
cmd+c Copy the short id

Images:

keys action
enter Run: arguments name (docker picks one when blank) and ports (8080:80, 443:443), then docker run -d
cmd+c Copy id
cmd+d Remove: docker rmi, after a confirm

Compose projects:

keys action
enter Up: compose up -d
cmd+l Logs: compose logs --tail 200
cmd+shift+r Restart
cmd+d Down, after a confirm
cmd+o Open the project folder

Marked rows (cmd-click, shift-click, shift+↓): containers start, stop, restart and remove together and copy their ids one per line (a running row carries Start at its end and a stopped one Stop, so a mix can go either way); images remove and copy together; Compose projects go up, down or restart one after another and their folders open together. Logs, Shell and Run stay one row's.

Setup

Docker (or Podman) installed and its daemon running; the CLI is looked up on PATH. Nothing else.

Which terminal Shell opens: on macOS the terminal setting (auto takes the first installed of kitty, Ghostty, Alacritty, iTerm2, Terminal); Terminal and iTerm2 are driven through AppleScript, so the first Shell into one of them asks for the Automation permission once. On Linux $TERMINAL, else the first of kitty, foot, alacritty, xterm on PATH.

Settings, [extensions.docker]:

key type default what
binary text docker The CLI to run; podman works.
ttl number (s) 10 How long a listing stays good for before a show lists again. Read when the extension loads.
terminal auto, kitty, Terminal, iTerm2, Ghostty, Alacritty auto macOS only: which terminal Shell opens.

What it does not do

  • Pull, build or push: only what is already on the machine is listed.
  • Remote hosts and contexts beyond what the CLI's own default context points at.
  • Stream logs: Logs is a snapshot of the last 200 lines (or the count in the bar), read again on the next cmd+l.
  • Wait for a slow command: after 8 s it goes on alone and the toast says so.

Platforms

macOS and Linux. The terminal for Shell is chosen per platform as above; everything else is the same CLI on both.