Purpose
Install Docker and optionally start/enable the daemon on Linux runners.
Location
setup/runner/install-docker.sh
Preconditions
- Required tools:
bash, package manager, optionalsudo, optionalsystemctl - Required permissions: package install privileges; service management for daemon actions
- Required environment variables: none
Arguments
| Flag | Required | Default | Description |
|---|---|---|---|
--manager NAME |
No | auto |
auto\|brew\|apt\|dnf\|yum |
--yes |
No | false |
Non-interactive install mode |
--update-cache |
No | false |
Refresh package metadata |
--start-service |
No | true |
Start/enable daemon on Linux |
--no-start-service |
No | false |
Skip daemon startup |
--add-user-to-docker-group |
No | false |
Add user to docker group (Linux) |
--dry-run |
No | false |
Print commands only |
Scenarios
- Happy path: Docker installed and daemon started (Linux).
- Common operational path: install binary only in immutable environments.
- Failure path: missing package manager or insufficient privileges.
- Recovery/rollback path: fix package/service permissions and rerun.
Usage
setup/runner/install-docker.sh --yes --update-cache
setup/runner/install-docker.sh --manager apt --no-start-service
setup/runner/install-docker.sh --add-user-to-docker-group
Behavior
- Main execution flow: detect manager, install package if needed, manage service/group options.
- Idempotency notes: skip install when docker already exists.
- Side effects: package install, daemon state changes, optional group membership changes.
Output
- Standard output format: timestamped progress logs.
- Exit codes:
0success1install/runtime failure2invalid arguments
Failure Modes
- Common errors and likely causes:
- unsupported manager selection
- package not found in repositories
- no permission for service/group updates
- Recovery and rollback steps:
- verify repositories and package availability
- rerun with elevated privileges where required
Security Notes
- Secret handling: none.
- Least-privilege requirements: avoid unnecessary root usage outside install/service steps.
- Audit/logging expectations: record daemon/group changes for compliance.
Testing
- Unit tests:
- manager detection and option validation
- Integration tests:
- install/start behavior on Linux/macOS test images
- Manual verification:
docker --versionanddocker info