Independent reviews. IonBin has no partnerships with the tools on this page and was not paid for these listings. Our evaluations are our own, based on public documentation and our research. Product names are trademarks of their owners and are used for identification only. How disclosure works.

CLI · Development environments · Docker

Docker CLI

Build and inspect containers so an application and its dependencies can be run in a defined environment.

Source reviewLocal runtime checksReviewed Editorial position 5 in cli tools
Check before use

Daemon access is powerful. Docker daemon control can expose host files or privileged execution. Do not treat access to its socket as a harmless convenience.

Understand the tool

What it does.

Docker CLI is the docker command that talks to a Docker daemon. A container packages an application with the files it needs to run. The CLI can build images, start containers and inspect their state. Installing the command alone does not provide a running container engine.

Why use it?

Use it when a project depends on services or tools that should be configured consistently. A documented container setup gives teammates a concrete environment to inspect. It is also useful for seeing which local services are running before changing anything.

A useful fit for

  • Local application dependencies
  • Repeatable development environments
  • Container state and log inspection

From need to output

Ways to put it to work.

These are suggested workflows based on the documented capabilities. They are not recorded runtime results.

Use case 01

Inspect a local development stack

A web application cannot reach its database.

  1. Check the selected Docker context and list containers.
  2. Inspect the expected service's status and logs.
  3. Compare published ports with the application's connection settings.

Intended outputA concrete distinction between an absent service, a stopped container and an application configuration problem.

Use case 02

Prepare a repeatable environment

Teammates need the same runtime and dependency setup.

  1. Review a Dockerfile and any Compose configuration.
  2. Build and test the image using synthetic development data.
  3. Document required ports, mounted folders and how to stop the stack.

Intended outputAn environment definition another developer can inspect and reproduce.

A concrete starting point

List containers without starting one

Replace CONTAINER_NAME with part of the expected container name. The selected Docker context determines which daemon is queried.

shell · illustrative example
docker container ls --all --filter "name=CONTAINER_NAME"

What this can change

Reads container metadata from the selected daemon. It does not start, stop or remove containers.

This example has not been executed for this review. Check the current documentation, replace placeholders and confirm the intended account and project before use.

Before you start

Setup and access.

What you’ll need

  • Docker CLI and access to a compatible running daemon
  • Docker Desktop or an appropriately configured engine
  • Resources for the selected images; registry access when pulling
Authentication
Local daemon permissions or remote-context credentials; registry sign-in is separate.
Can read
  • Container, image and daemon metadata
  • Mounted host files when a container is given access
Can write or change
  • Containers, images, volumes and networks
  • Host files exposed through writable mounts
Network and data flow
  • Selected Docker daemon
  • Image registries and any network reachable by running containers
Approval and control
The daemon enforces access. An authorized CLI command generally does not create a separate human approval step.

Check your environment

Compatibility, costs and license.

Compatibility notes

  • CLI available on Windows, macOS and Linux
  • Container OS and architecture must match the engine's supported execution environment

Costs and account requirements

CLI source is open source. Docker Desktop has separate eligibility and subscription terms; registries and hosted services can add charges.

Current pricing or plan information ↗

Apache-2.0

CLI source license; Docker Desktop and included components have additional terms.

Read the license or service terms ↗

Keep the boundaries visible

Concerns and limitations.

Daemon access is powerful

Docker daemon control can expose host files or privileged execution. Do not treat access to its socket as a harmless convenience.

Images and mounts are trust decisions

An image runs code. Review its origin and avoid unnecessary privileged mode, broad writable mounts or public ports.

Where it may fall short

  • A container is not an automatic security guarantee.
  • Images, Compose files and application configuration need separate review.

Observed behavior · 2026-10-18

Runtime and security findings.

Local runtime checks

The client created a context, parsed one synthetic container from a localhost API fixture and refused TLS setup without its CA file. No Docker Engine or container isolation was tested.

These checks cover the conditions below. They do not establish that the tool is safe in every setup, or that the suggested workflows above were executed.

What we found

Observed in this evaluation

The context chooses the authority being contacted

A context supplied by the fixture directed the client to our loopback server, whose synthetic container list was displayed. This is expected client behavior and says nothing about a real daemon.

In practice: Inspect docker context show/inspect and the target host before operations; use authenticated protected transports for remote daemons.

Documented concern · high severity under stated conditions

Daemon access can carry host-level power

Docker documents that daemon control and host-directory mounts can grant powerful access to the host. The CLI fixture did not exercise these capabilities.

In practice: Restrict who can access the daemon, avoid broad host mounts and assess rootless mode where appropriate.

Version, environment and fixture
Version or deployment
29.9.1 (build dfc520d)
Tested target
Official Docker Windows static client archive
Artifact identity
SHA-256 5d9b66509390553fd97d590ec2ff0ce10b04c2ac653fa52f2abf2f05c4c197ca of the official downloaded docker.zip artifact.
Environment and fixture
  • Windows 11 x64; Python 3.12.10 harness. Raw timestamps UTC.
  • Fresh per-tool home/config/cache; child environment constructed from OS/runtime paths, explicit isolation variables and no inherited credentials. Synthetic fixtures only; no user account sign-in.
  • No daemon/service was installed or started. Only the downloaded docker.exe client ran.

Checks and results

4 recorded checks. Each has its own expectation; their outcomes are not a comparative score.

Downloaded versionMet expectation
Method
<evaluation>\downloads\cli\docker\docker\docker.exe --version
Expected
Print the client version.
Observed
Exit 0. Docker version 29.9.1, build dfc520d
Create isolated daemon contextMet expectation
Method
<evaluation>\downloads\cli\docker\docker\docker.exe context create ionbin-local-fixture-57373 --docker host=tcp://127.0.0.1:57373
Expected
Store the synthetic loopback endpoint.
Observed
Exit 0. ionbin-local-fixture-57373 Successfully created context "ionbin-local-fixture-57373"
Read a synthetic container listingMet expectation
Method
<evaluation>\downloads\cli\docker\docker\docker.exe --context ionbin-local-fixture-57373 ps -a --format "{{json .}}"
Expected
Parse exactly one synthetic API fixture container.
Observed
Exit 0. JSON output contained ID=aaaaaaaaaaaa, Image=synthetic:1, Names=ionbin-fixture and State=exited. The loopback server recorded the container-list request; this was a stub, not a running container.
TLS without a trust fileMet expectation
Method
<evaluation>\downloads\cli\docker\docker\docker.exe --host tcp://127.0.0.1:57373 --tlsverify ps
Expected
Fail to initialize TLS when the isolated ca.pem file is absent.
Observed
Exit 1. Failed to initialize because the isolated Docker ca.pem file did not exist.

Practical caveats

  • The initial loopback attempt was denied by the host sandbox. The retained rerun used scoped execution permission and succeeded.
  • TLS failure here is only a missing-file preflight result; no certificate chain or hostile endpoint test was run.

What this evaluation does not establish

  • Container build/run, image pulling/scanning, daemon authorization and kernel isolation.
  • Linux versus Windows container behavior, privileged mounts, TLS certificate validation and multi-tenant controls.

Read the evaluation record (JSON) →

Sources for the evaluation and controls

The basis for this review

Why it’s in the collection.

An editorial infrastructure starting point: the output is tangible and inspection commands are clear, but daemon and image permissions add setup decisions.

The number is an editorial starting order within the cli tools collection. It does not measure popularity, speed, reliability or safety.

What we reviewed

  • CLI repository, container-list reference, Engine security and Desktop licensing

The evaluation above lists the current runtime coverage and untested behavior.

Source review

Reviewed Oct 18, 2026. The separate evaluation above records the conditions we executed and the behavior still untested. Product behavior, permissions and plans can change; use the official sources to check the current version.

Read the ranking and review method →

Follow the evidence

Official sources.

  1. Docker CLI source ↗github.com
  2. Container-list command ↗docs.docker.com
  3. Engine security ↗docs.docker.com
  4. Desktop licensing ↗docs.docker.com