golang

The official Go toolchain image — providing the Go compiler, standard library, and module tooling for building, testing, and running Go applications and static binaries in containers.

golang, go, go modules, compiler, microservices, cloud native

What is Go?

The Go image packages the Go toolchain — compiler, linker, standard library, and the go command — so you can build, test, and run Go programs in a container without installing a toolchain on the host. Go is the language behind much of the cloud-native ecosystem, including Kubernetes, Docker, Terraform, and Prometheus, and is widely used for microservices, CLIs, and infrastructure tooling because it compiles to fast, self-contained static binaries. The official image is most often used as the build stage of a multi-stage Dockerfile that runs go build and copies the resulting binary into a minimal runtime image, and it also serves as a ready-to-use environment for running go test and go run in CI pipelines. The Go image is used by backend teams building services, by platform teams producing standardized build images, and by CI systems that need a reproducible, version-pinned toolchain across development, staging, and production workflows.

What is Echo's Go image?

Echo's Go image is a hardened build of Go on Echo's hardened base. Echo images are designed to be a drop-in replacement: swap the image reference in your Dockerfile or deployment manifest and CVEs go to zero without disrupting your Go modules, build flags, and CI pipeline configuration. Every image is tested across clouds, image use cases, and deployment targets. Echo ships every image in two variants:

  • Distroless variant — optimized for runtime use, with the smallest possible attack surface
  • Default variant — includes essential build tools, package managers, and shells for teams that need operational access

For production Go deployments, the distroless variant keeps all runtime operations — compilation, module resolution, test execution, and cross-compilation — fully intact while minimizing exposure; the default variant suits application and platform teams that need shell access for debugging builds, inspecting the module cache, or running ad-hoc Go tooling.

What is the difference between Echo's Go image and the public Go image?

Public Go images ship on bases that include OS-level tooling convenient for development but which contribute CVEs that accumulate on a build and runtime environment used in production. Go images run with access to your application code, dependencies, and the environment variables and credentials your orchestrator injects. OS-level CVEs in the base image — particularly in libraries such as git, openssl, and curl that Go builds pull in to fetch modules — create exploitable paths that bypass application-layer controls entirely. For teams running many services, the image is also one of the largest sources of scanner noise in the CI pipeline — every package in the base becomes a finding your security team must triage, even when none of it is reachable from the application. Echo's build retains everything Go needs for compilation, module resolution, test execution, and cross-compilation while removing the packages that don't belong in a production Go build and runtime environment. As we covered in our post on how to protect your company from software supply chain attacks, runtime and build images that combine access to source code, secrets, and network exposure are among the widest attack surfaces in the container stack. Echo commits to a 7-day SLA for critical and high severity vulnerabilities, and 10 days for medium, low, and unknown — with vulnerabilities triaged within 24 hours. Echo images are recognized by all major scanners and mirrored to all major registries, so they fit into existing pipelines without changing your registry, scanner, or runtime tooling.

FAQ

Can I replace my Go image with Echo's Go image?

Yes. Echo's Go image is a drop-in replacement. Update the FROM line in your Dockerfile and your workloads keep running. Module resolution, build caching, cross-compilation with GOOS and GOARCH, and test execution all continue to work without changes to your go.mod, Makefiles, or CI configuration.

Is Echo's Go image FIPS-validated?

Yes. Echo's FIPS-validated images use cryptographic modules with an active FIPS 140-3 CMVP certificate, making them fit for federal use — unlike FIPS-compliant images that haven't been validated. This matters for teams running Go workloads inside FedRAMP boundaries, where a build and runtime environment that compiles code and fetches modules over the network must meet cryptographic requirements across the full stack — including the OpenSSL and TLS libraries bundled with the Go image.

What is Echo's vulnerability management SLA on the Go image?

Echo commits to a 7-day SLA for critical and high severity vulnerabilities, and 10 days for medium, low, and unknown — with vulnerabilities triaged within 24 hours. Patches are mirrored automatically into your private registry so you're always running a clean version — critical for a build and runtime environment that runs with access to your code, dependencies, and injected secrets.

Is Echo's Go image distroless?

Echo ships every image in two variants: a distroless variant optimized for runtime use, and a default variant that includes essential build tools, package managers, and shells. For production Go deployments, the distroless variant is the leaner, more secure choice; for application and platform teams that need shell access for debugging builds, inspecting the module cache, or running ad-hoc Go tooling, the default variant is the right fit.

How does Echo achieve such a drastic CVE reduction in Go?

Echo's Go image is built from source with only the absolute essentials needed to run the Go build and runtime environment, which significantly shrinks the attack surface. Echo also patches aggressively over time, with backports available so you can stay on the Go version your applications and their dependencies are certified against — avoiding a disruptive upgrade forced purely by OS-level vulnerabilities in the base image rather than by your own requirements.

Will Echo's Go image help us achieve FedRAMP?

Yes. The hard parts of FedRAMP — managing vulnerabilities, applying fixes, and using FIPS-validated cryptography — are baked into Echo images, including STIG-hardened configuration and ConMon/POA&M-ready reporting. For build and platform teams running Go under an ATO — whether that's a Kubernetes controller, an internal API service, or a CLI shipped into government environments — Echo's hardened Go image keeps the build and runtime environment layer in-boundary and compliant without requiring custom hardening scripts or manual base image patching between compliance cycles.

‍

Interested in base images that start and stay clean?