# jackin-docker (https://jackin.tailrocks.com/reference/crates/jackin-docker/)



{/* GENERATED from crates/jackin-docker/README.md — edit the README, not this file */}

Concrete Docker daemon client and subprocess shell runner for jackin❯. The workspace's adapter over Docker — image build/run/inspect, networking, and a captured shell-command runner — implemented behind the ports declared in `jackin-core`.

## What this crate owns [#what-this-crate-owns]

* The Docker client (`docker_client`) — image/container operations against the daemon.
* A captured shell-command runner (`shell_runner`) used across the workspace for `op`, `gh`, and other host CLIs.
* Docker networking helpers (`net`).

## Architecture tier and allowed dependencies [#architecture-tier-and-allowed-dependencies]

**L2 infrastructure.** Allowed workspace dependencies: `jackin-core`, `jackin-diagnostics`, `jackin-build-meta`. Must NOT depend on presentation (`jackin-launch-tui`, `jackin-console`, `jackin-tui`) — Docker access is infrastructure, consumed by orchestration above.

## Structure [#structure]

| Module                                                                                                                                                                            | Owns                          | Tests                                                                                  |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | -------------------------------------------------------------------------------------- |
| <RepoFile path="crates/jackin-docker/src/lib.rs">`lib.rs`</RepoFile>                                                                                                              | crate root, re-exports        | —                                                                                      |
| <RepoFile path="crates/jackin-docker/src/docker_client.rs">`docker_client.rs`</RepoFile> · <RepoFile path="crates/jackin-docker/src/docker_client.rs">`docker_client/`</RepoFile> | Docker daemon client          | <RepoFile path="crates/jackin-docker/src/docker_client/tests.rs">`tests.rs`</RepoFile> |
| <RepoFile path="crates/jackin-docker/src/shell_runner.rs">`shell_runner.rs`</RepoFile> · <RepoFile path="crates/jackin-docker/src/shell_runner.rs">`shell_runner/`</RepoFile>     | captured shell-command runner | <RepoFile path="crates/jackin-docker/src/shell_runner/tests.rs">`tests.rs`</RepoFile>  |
| <RepoFile path="crates/jackin-docker/src/net.rs">`net.rs`</RepoFile> · <RepoFile path="crates/jackin-docker/src/net.rs">`net/`</RepoFile>                                         | Docker networking helpers     | <RepoFile path="crates/jackin-docker/src/net/tests.rs">`tests.rs`</RepoFile>           |

## Public API [#public-api]

`DockerApi` and `CommandRunner` implementations plus the networking helpers consumed by `jackin-runtime`, `jackin-image`, `jackin-isolation`, and `jackin-host`.

## How to verify [#how-to-verify]

```sh
cargo nextest run -p jackin-docker
cargo clippy -p jackin-docker --all-targets -- -D warnings
```
