Skip to content
Quick Start

Quick start

Deploy Drydock with Docker in seconds using a socket proxy or direct mount.

Run the Docker image

The easiest way to start is to deploy the official drydock image.

Using a socket proxy is the most secure way to expose the Docker API. The proxy limits which endpoints Drydock can access.

services:
  drydock:
    image: codeswhat/drydock
    container_name: drydock
    depends_on:
      socket-proxy:
        condition: service_healthy
    environment:
      - DD_WATCHER_LOCAL_HOST=socket-proxy
      - DD_WATCHER_LOCAL_PORT=2375
      - DD_AUTH_BASIC_ADMIN_USER=admin
      - "DD_AUTH_BASIC_ADMIN_HASH=argon2id$$65536$$3$$4$$H/LzIyo+5tbepUCiuRU2bFai+nbf+y/ZjMYH7h+vf1g=$$GeCkn8cI/+DbKXUiPydlqKUvj5Ujb4wL5sUkSm83rQWyIejvWoejrk6zWmQ2x5an7qvSHYL9gZHpibCXAJNdYw=="
    ports:
      - 3000:3000

  socket-proxy:
    image: tecnativa/docker-socket-proxy
    container_name: drydock-socket-proxy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - CONTAINERS=1
      - IMAGES=1
      - EVENTS=1
      - SERVICES=1
      # Add POST=1 for container actions (start/stop/restart) or auto-updates
      # Add NETWORKS=1 if using the Docker trigger for auto-updates
    healthcheck:
      test: wget --spider http://localhost:2375/version || exit 1
      interval: 5s
      timeout: 3s
      retries: 3
      start_period: 5s
    restart: unless-stopped

The official image is published on Github Container Registry: codeswhat/drydock.

Authentication is required by default on fresh installs. The examples above use Basic auth with username admin and password password. See the auth docs for OIDC, anonymous access, and other options.

Migrating from WUD

If you are coming from What's Up Docker, you can switch images and keep your existing config (WUD_* env vars and wud.* labels still work).

To rewrite your local config to drydock naming (DD_* and dd.*), run:

# preview changes only
docker exec -it drydock node dist/index.js config migrate --dry-run

# apply changes to specific files
docker exec -it drydock node dist/index.js config migrate --file .env --file compose.yaml

config migrate reads/writes only local files in your deployment. It does not send usage data to external services.

Open the UI

Open the UI in a browser and check that everything is working as expected.

First 5 minutes in the UI

  1. Open the command palette with Cmd/Ctrl+K.
  2. Use prefix scopes to narrow search quickly:
    • / pages
    • @ runtime resources (containers, agents, triggers, watchers)
    • # config resources (registries, auth, notifications, settings)
  3. Leave the query empty to use recent results.
  4. Open Notifications and tune event rules (update-available, update-applied, update-failed, security-alert, agent-disconnect) plus trigger assignments.
  5. Reorder dashboard widgets by drag/drop; layout persists locally and can be reset.

Keyboard shortcuts: Enter confirms action dialogs, Escape cancels dialogs and closes detail panels.

Next steps