Containers are processes with a restricted view of the machine. There is no container object in the Linux kernel — what exists is a set of primitives that, combined, produce isolation: namespaces give a process its own view of process identifiers, mounts, network interfaces, users and hostnames; control groups cap and account for its CPU, memory and I/O; capabilities and seccomp filters reduce what it may ask the kernel to do; and a union filesystem assembles its root directory from stacked read-only layers with a thin writable layer on top. Everything above that is tooling.
That tooling is standardised, which is the reason container skills transfer between products. The Open Container Initiative defines three specifications — image, runtime and distribution — so an image built by one tool runs under another runtime and is served by any compliant registry. Beneath the familiar commands sit low-level runtimes such as runc and crun, high-level runtimes such as containerd and CRI-O that manage images, storage and lifecycle, and sandboxed alternatives such as Kata Containers, gVisor and Firecracker that trade startup cost for a stronger boundary. Building has similarly diversified beyond one tool: BuildKit, Buildah, Kaniko, Cloud Native Buildpacks and language-native builders all produce the same OCI artefact.
The hard problems with containers in production are rarely about starting one. They are about the image supply chain — what is inside a base image, whether it is signed, whether its provenance is attested, how vulnerabilities are triaged and how quickly a rebuild reaches production. They are about isolation being weaker than a virtual machine's, so a root process inside a container is one misconfiguration away from being root outside it. And they are about resource behaviour, where a CPU quota produces throttling that looks nothing like a busy machine and a memory limit produces a kill rather than a slowdown.
Why this skill matters now
Containers are now the default packaging format for server software, which means the interesting questions have moved past adoption. Organisations that containerised years ago are dealing with the consequences: thousands of images of unknown provenance, base images that nobody owns, build tooling that requires a privileged daemon in CI, registries with no retention policy, and security teams asking questions the platform cannot answer.
Regulation has accelerated that. Software bills of materials, provenance attestation and signed artefacts have moved from good practice to procurement requirement in several sectors, and satisfying them requires understanding the image format and the build path rather than adding a scanner at the end. The engineers who can design a supply chain — reproducible builds, signed images, verified admission, a rebuild path that actually gets patches to production — are in demand well beyond the platform team.
The runtime landscape has also stopped being a single choice. Kubernetes clusters run containerd or CRI-O rather than Docker; CI systems build without a privileged daemon; multi-tenant platforms evaluate sandboxed runtimes; and some workloads belong on a managed service rather than an orchestrator at all. Making those calls needs vendor-neutral understanding rather than familiarity with one product's command set.