diff --git a/docs/architecture.md b/docs/architecture.md new file mode 100644 index 000000000..dd05493c0 --- /dev/null +++ b/docs/architecture.md @@ -0,0 +1,22 @@ +# Architecture + +This CLI has the following high level design goals: +1. Provide a way for the Docker experience to be mapped to different container + runtimes +1. Provide a way to automatically generate high quality SDKs in popular + languages +1. Ensure that existing Docker CLI commands continue to work as before + +These constraints resulted in the following architecture: + +![CLI architecture](./images/cli-architecture.png) + +What follows is a list of useful links to help navigate the code: +* The CLI UX code is in [`cli/`](../cli) +* The backend interface is defined in [`backend/`](../backend) + * An example backend can be found in [`example/`](../example) +* The API is defined by protobufs that can be found in [`protos/`](../protos) +* The API server is in [`server/`](../server) +* The context management and interface can be found in [`context/`](../context) +* The Node SDK is autogenerated and can be found in + [`docker/node-sdk`](https://github.com/docker/node-sdk) \ No newline at end of file diff --git a/docs/images/cli-architecture-src.drawio b/docs/images/cli-architecture-src.drawio new file mode 100644 index 000000000..866400647 --- /dev/null +++ b/docs/images/cli-architecture-src.drawio @@ -0,0 +1 @@ +5VnbctowEP0aHtvBljHwCIZcpkknKdM2eRS2sNXIFiOLYPr1lbB8lUNpuHnSl0RaaWXr7J7jlegAJ0yuGVwG99RDpGN2vaQDJh3THBiG+CsNm9Rgg2Fq8Bn2UpNRGGb4N1LGrrKusIfiykROKeF4WTW6NIqQyys2yBhdV6ctKKk+dQl9pBlmLiS69Sf2eKC2ZfYL+w3CfpA92bDV/kKYTVY7iQPo0XXJBKYd4DBKedoKEwcRiV2GS+p39cZo/mIMRXwfB/PRfME4Gjx+H/Gb+yv8Y+IMP5mDdJlXSFZqx+pt+SaDgNFV5CG5SrcDxusAczRbQleOrkXMhS3gIRE9QzQXmBCHEspEP6KRmDT2YBxs3eW4/tZqI6+IcZSUTGoX14iGiLONmJLllAJUZVQO8LqIjwWULSjFJneEKif8fOkCNtFQyP0DioYG4hi6LyjypGPEEVtIuA7C9Qi4GcMqcMDSgTO7DcBZp8It20MJFOQJ+qmuyp8qTpTxgPo0guSO0qVC5xfifKPEA644rWKHEsyfSu1nudTnnupNErXytrPJOpHY4FO5U/KS3cJt28v8Yg4ZH0nhEQaXwDjGbma+wiR/pcjTJwljacqbEY/pirloF6xKJyHzEd81T8VVYr4zgRgikOPXqiQePxs0FjlUkCfhWzWNhNKy9nGoe2kOGf2zcqjgzXOZNo0cagMXwJ5cMOxWcQFoXBg93LYu+01bz37jrNnf0zXjTuDU/f50cbDM1oFla2ChBIZLAZAgCIo5jnzRmmely4XxAzX8LGBp+A3PqrR/K43PJKtFaVJUI8+5lh5cmrxfa/v7am2rpLavsWLqzFrEg1wjWsMD0A4enDyfB8fOU+X6QMWh8O0PBaifU1NCKa9a8PLXeH889SuAkXPbIgKYVq9lBLD+EwIcvSZuJwEMvTDqmDYRYI3nouHLxlfqyTJpNvmSDYlH5aMX50i9MjcaLsXOW2wauqz43x4cDantAb8CR8wZfUG1S8SGe0VIsB/JzEfyik0YJFzYhWSkBkLsefIxjfhXI3QMmap9p42BHgKrIQLmqSKQLbwrracJzur+7cGphandG5gVXHO1KKe22QCsfTJg9dN5gaMtTlRi49E8lv/c7Abro2Z9/ZTWGJ0m4QEni46u5rMg9aOrDxyJnlGPRE+LRP+c+gP20B+Hhksao6r8zFkhPnsI0uERJGjBD4vfBX7jMo70MRHd4kfItKQqfskF0z8= \ No newline at end of file diff --git a/docs/images/cli-architecture.png b/docs/images/cli-architecture.png new file mode 100644 index 000000000..d713b1443 Binary files /dev/null and b/docs/images/cli-architecture.png differ