Skip to main content

Command Palette

Search for a command to run...

Skopeo: Push Container Images without Privileged Access:

Updated
2 min read
Skopeo: Push Container Images without Privileged Access:

Want to Push Container Images Without Docker or Privileged Access? Use Skopeo

If you need to move container images between registries, the common approach is:

docker pull <source-registry>/image:tag
docker tag <source-registry>/image:tag \
    <dest-registry>/image:tag
docker push <dest-registry>/image:tag

Simple—but it comes with a hidden cost.

Running Docker requires access to the Docker daemon via the Unix socket, which effectively grants root-level privileges on the host. Anyone with access to that socket can control containers, mount filesystems, and potentially escape isolation boundaries.

That’s a serious security concern in CI/CD pipelines and shared environments.


🔑 The Key Insight

Pushing and pulling container images does not require a container runtime.

Container registries expose HTTP APIs (OCI / Docker Registry API). Image transfer is just moving layers over HTTP—no namespaces, no cgroups, no daemon required.


🚀 Enter Skopeo

Skopeo is a CLI tool that lets you interact with container registries directly—without Docker.

You can copy images between registries like this:

skopeo copy \
  <source-registry>/image:tag \
  <dest-registry>/image:tag

No daemon. No socket. No privileged access.


✅ Why This Matters

  • 🔒 Improved security – no Docker socket exposure

  • Lightweight – no daemon overhead

  • 🤖 CI/CD friendly – works in restricted environments

  • 🌍 Flexible – supports multiple registries and transports


🧠 When to Use It

Skopeo is especially useful when:

  • Running in locked-down CI environments

  • You want to avoid Docker-in-Docker

  • You need to transfer images across registries securely

  • You’re working in air-gapped or minimal systems