diff --git a/README.md b/README.md index 36c87e32..acf3f4a0 100644 --- a/README.md +++ b/README.md @@ -63,18 +63,18 @@ Not sure what these terms mean? The [glossary](docs/introduction/glossary.md) de **Host machine** (where you run `topo`): -- [Docker](#install-docker) +- [Docker](#install-a-container-engine) - OpenSSH Client **Target machine** (the remote Arm system): - Reachable with SSH - Linux on ARM64 -- [Docker](#install-docker) +- [Docker](#install-a-container-engine) The host and target can be the same system. If you're working directly on an Arm Linux system, use `--target localhost`. -### Install Docker +### Install a Container Engine See [Install Docker for Topo](docs/introduction/container-engines.md) for supported installation methods and verification steps. diff --git a/internal/health/check.go b/internal/health/check.go index 9012c308..6bc8654e 100644 --- a/internal/health/check.go +++ b/internal/health/check.go @@ -116,7 +116,7 @@ func (c DockerComposeMinVersion) Run(ctx context.Context, r runner.Runner, _ Dep if !version.IsAtLeastVersion(output.Version, c.MinVersion) { return &Fix{ - Description: fmt.Sprintf("Upgrade Docker Compose to version %s or later", c.MinVersion), + Description: fmt.Sprintf("Upgrade Docker Compose to version %s or later. See %s", c.MinVersion, containerEngineInstallURL), }, fmt.Errorf("installed docker compose version %s is older than required version %s", output.Version, c.MinVersion) } diff --git a/internal/health/dependencies.go b/internal/health/dependencies.go index 9adab6c6..e268dea4 100644 --- a/internal/health/dependencies.go +++ b/internal/health/dependencies.go @@ -26,6 +26,8 @@ const ( type SoftwareDependency int +const containerEngineInstallURL = "https://github.com/arm/topo#install-a-container-engine" + const ( UnsetSoftwareDependency SoftwareDependency = iota Docker @@ -84,10 +86,16 @@ var HostRequiredDependencies = []Dependency{ Label: "Container Engine", SoftwareEnumID: Docker, Checks: []Check{ - BinaryExists{}, + BinaryExists{ + Fix: &Fix{ + Description: "Install a supported container engine. See " + containerEngineInstallURL, + }, + }, CommandSuccessful{ Cmd: "docker info", - Fix: &Fix{Description: "Ensure current user can run docker commands"}, + Fix: &Fix{ + Description: "Ensure current user can run docker commands. See " + containerEngineInstallURL, + }, }, }, }, @@ -99,7 +107,7 @@ var HostRequiredDependencies = []Dependency{ CommandSuccessful{ Cmd: "docker compose", Fix: &Fix{ - Description: "Ensure Docker Compose is installed as a plugin for Docker", + Description: "Ensure Docker Compose is installed as a plugin for Docker. See " + containerEngineInstallURL, }, }, DockerComposeMinVersion{ @@ -116,10 +124,16 @@ func TargetRequiredDependencies(target ssh.Destination) []Dependency { Label: "Container Engine", SoftwareEnumID: Docker, Checks: []Check{ - BinaryExists{}, + BinaryExists{ + Fix: &Fix{ + Description: "Install a supported container engine. See " + containerEngineInstallURL, + }, + }, CommandSuccessful{ Cmd: "docker info", - Fix: &Fix{Description: "Ensure current user can run docker commands"}, + Fix: &Fix{ + Description: "Ensure current user can run docker commands. See " + containerEngineInstallURL, + }, }, }, },