Skip to content

Arguments

Configuration is env-vars-first. Every setting has a LOOKOUT_* environment variable, and most also have a matching CLI flag that overrides it. A flag you do not pass never touches the env-var-derived value. There is no way to "unset" an env var from the CLI — you can only add an override on top of it.

List-valued environment variables (LOOKOUT_INCLUDE_NAMES, LOOKOUT_EXCLUDE_NAMES, LOOKOUT_NOTIFICATION_URLS) take a comma-separated string, not a JSON array:

LOOKOUT_INCLUDE_NAMES=web,worker

Run once

Run a single check-and-update pass and exit, instead of running as a daemon. Use this to drive lookout from an external scheduler instead of its own polling loop. Examples: a cron job, a CI pipeline, or a manual check right after pushing a new image.

 Argument: --run-once
     Type: Boolean
  Default: false

Poll interval

How often, in seconds, lookout checks containers for updates.

            Argument: --interval
Environment Variable: LOOKOUT_INTERVAL_SECONDS
                Type: Integer
             Default: 300

Include

Only monitor containers with this name. Repeatable.

            Argument: --include (repeatable)
Environment Variable: LOOKOUT_INCLUDE_NAMES
                Type: Comma-separated string
             Default: (empty — monitors all containers)

Exclude

Never monitor containers with this name. Repeatable. Exclude always wins over include and over the enable label — see Container selection for the full precedence order.

            Argument: --exclude (repeatable)
Environment Variable: LOOKOUT_EXCLUDE_NAMES
                Type: Comma-separated string
             Default: (empty)

Label enable

Only monitor containers that have the io.lookout.enable label set to true, instead of monitoring every container by default. Use this on a host running containers you do not want lookout to touch unless they opt in explicitly. See Container selection for how this combines with --include/--exclude.

            Argument: --label-enable
Environment Variable: LOOKOUT_LABEL_ENABLE
                Type: Boolean
             Default: false

Scope

Only monitor containers whose io.lookout.scope label matches this value. When unset, ignore any container that has the scope label set at all, on the assumption that another lookout instance handles it. Lets several independent instances split a daemon's containers between them. See Container selection.

            Argument: --scope
Environment Variable: LOOKOUT_SCOPE
                Type: String
             Default: (unset — ignores any container with a scope label set)

Cleanup

Best-effort removal of the old image after lookout successfully recreates its container onto a newer one, so superseded images do not pile up on disk. If something else still references the old image, lookout silently skips the removal instead of raising an error. See Limitations.

            Argument: --cleanup
Environment Variable: LOOKOUT_CLEANUP
                Type: Boolean
             Default: false

Monitor only

Check for and report staleness, but never stop or recreate containers. Use this for containers you want visibility into without automatic changes — a database you would rather update by hand, for example. You can also set this per-container with the io.lookout.monitor-only label. The global flag and the label combine with OR, not override: if either one is set, lookout leaves that container alone.

            Argument: --monitor-only
Environment Variable: LOOKOUT_MONITOR_ONLY
                Type: Boolean
             Default: false

No pull

Never pull. Recreate using whatever image is already present locally under that name and tag. Use this when something else already puts the new image on the host. Two examples: a CI job that pulls it, or an image built directly on the Docker host and never pushed to a registry at all. You can also set this per-container with the io.lookout.no-pull label (same OR-combination as monitor-only).

            Argument: --no-pull
Environment Variable: LOOKOUT_NO_PULL
                Type: Boolean
             Default: false

Docker host

Docker daemon to connect to. Use this to point lookout at a different daemon than the default without exporting DOCKER_HOST for the whole process. If omitted, the docker SDK's own defaults apply. Those defaults already honor the standard DOCKER_HOST, DOCKER_TLS_VERIFY, and DOCKER_CERT_PATH environment variables, so remote hosts and TLS work without a dedicated lookout flag for either.

            Argument: --docker-host
Environment Variable: LOOKOUT_DOCKER_HOST
                Type: String
             Default: - (SDK default: unix:///var/run/docker.sock, or DOCKER_HOST if set)

Log level

            Argument: --log-level
Environment Variable: LOOKOUT_LOG_LEVEL
     Possible values: any Python logging level name, e.g. DEBUG, INFO, WARNING, ERROR
             Default: INFO

Stop timeout

Seconds to wait for a container to stop gracefully before Docker forces it with SIGKILL. Increase this for containers that need longer to shut down cleanly, such as a database flushing its write cache to disk. A SIGKILL mid-flush on such a container can cause data loss or corruption. This is an env-var-only setting. No CLI flag currently exposes it.

            Argument: N/A
Environment Variable: LOOKOUT_STOP_TIMEOUT_SECONDS
                Type: Integer
             Default: 10

Notification URLs

Apprise service URLs to send the run summary to. This is an env-var-only setting. No CLI flag currently exposes it. See Notifications.

            Argument: N/A
Environment Variable: LOOKOUT_NOTIFICATION_URLS
                Type: Comma-separated string of Apprise service URLs
             Default: (empty — sends no notifications)

Notify only on change

Skip sending a notification when nothing was updated, failed, or found stale. This way, you are not notified about every routine poll that finds nothing to do. See Notifications.

            Argument: --notify-only-on-change
Environment Variable: LOOKOUT_NOTIFY_ONLY_ON_CHANGE
                Type: Boolean
             Default: false

Notify on startup

Send a one-time notification when lookout starts, separate from the per-run summary. Use this to confirm lookout came back up after a host reboot or its own update. You do not have to wait for the next scheduled run summary — see Notifications.

            Argument: --notify-on-startup
Environment Variable: LOOKOUT_NOTIFY_ON_STARTUP
                Type: Boolean
             Default: false

Registry host / username / password

A single fallback credential pair for one private registry. lookout tries it only for images on LOOKOUT_REGISTRY_HOST, and only when config.json has no matching entry (or there is no config.json at all). LOOKOUT_REGISTRY_HOST is required for the other two variables to have any effect. Without it, lookout never uses the credentials. It does not send them to every registry that lacks a config.json entry. That would break anonymous access to public images on unrelated registries. This is an env-var-only setting: putting a password on the CLI would leak it into shell history and ps output. See Private registries.

            Argument: N/A
Environment Variable: LOOKOUT_REGISTRY_HOST, LOOKOUT_REGISTRY_USERNAME, LOOKOUT_REGISTRY_PASSWORD
                Type: String
             Default: - (no fallback credentials)