974294600f
Signed-off-by: zhoulin xie <zhoulin.xie@daocloud.io>
117 lines
5.6 KiB
Markdown
117 lines
5.6 KiB
Markdown
Moby Project Roadmap
|
|
====================
|
|
|
|
### How should I use this document?
|
|
|
|
This document provides description of items that the project decided to prioritize. This should
|
|
serve as a reference point for Moby contributors to understand where the project is going, and
|
|
help determine if a contribution could be conflicting with some longer term plans.
|
|
|
|
The fact that a feature isn't listed here doesn't mean that a patch for it will automatically be
|
|
refused! We are always happy to receive patches for new cool features we haven't thought about,
|
|
or didn't judge to be a priority. Please however understand that such patches might take longer
|
|
for us to review.
|
|
|
|
### How can I help?
|
|
|
|
Short term objectives are listed in
|
|
[Issues](https://github.com/moby/moby/issues?q=is%3Aopen+is%3Aissue+label%3Aroadmap). Our
|
|
goal is to split down the workload in such way that anybody can jump in and help. Please comment on
|
|
issues if you want to work on it to avoid duplicating effort! Similarly, if a maintainer is already
|
|
assigned on an issue you'd like to participate in, pinging him on GitHub to offer your help is
|
|
the best way to go.
|
|
|
|
### How can I add something to the roadmap?
|
|
|
|
The roadmap process is new to the Moby Project: we are only beginning to structure and document the
|
|
project objectives. Our immediate goal is to be more transparent, and work with our community to
|
|
focus our efforts on fewer prioritized topics.
|
|
|
|
We hope to offer in the near future a process allowing anyone to propose a topic to the roadmap, but
|
|
we are not quite there yet. For the time being, it is best to discuss with the maintainers on an
|
|
issue, in the Slack channel, or in person at the Moby Summits that happen every few months.
|
|
|
|
# 1. Features and refactoring
|
|
|
|
## 1.1 Runtime improvements
|
|
|
|
Over time we have accumulated a lot of functionality in the container runtime
|
|
aspect of Moby while also growing in other areas. Much of the container runtime
|
|
pieces are now duplicated work available in other, lower level components such
|
|
as [containerd](https://containerd.io).
|
|
|
|
Moby currently only utilizes containerd for basic runtime state management, e.g. starting
|
|
and stopping a container, which is what the pre-containerd 1.0 daemon provided.
|
|
Now that containerd is a full-fledged container runtime which supports full
|
|
container life-cycle management, we would like to start relying more on containerd
|
|
and removing the bits in Moby which are now duplicated. This will necessitate
|
|
a significant effort to refactor and even remove large parts of Moby's codebase.
|
|
|
|
Tracking issues:
|
|
|
|
- [#38043](https://github.com/moby/moby/issues/38043) Proposal: containerd image integration
|
|
|
|
## 1.2 Image Builder
|
|
|
|
Work is ongoing to integrate [BuildKit](https://github.com/moby/buildkit) into
|
|
Moby and replace the "v0" build implementation. Buildkit offers better cache
|
|
management, parallelizable build steps, and better extensibility while also
|
|
keeping builds portable, a chief tenent of Moby's builder.
|
|
|
|
Upon completion of this effort, users will have a builder that performs better
|
|
while also being more extensible, enabling users to provide their own custom
|
|
syntax which can be either Dockerfile-like or something completely different.
|
|
|
|
See [buildpacks on buildkit](https://github.com/tonistiigi/buildkit-pack) as an
|
|
example of this extensibility.
|
|
|
|
New features for the builder and Dockerfile should be implemented first in the
|
|
BuildKit backend using an external Dockerfile implementation from the container
|
|
images. This allows everyone to test and evaluate the feature without upgrading
|
|
their daemon. New features should go to the experimental channel first, and can be
|
|
part of the `docker/dockerfile:experimental` image. From there they graduate to
|
|
`docker/dockerfile:latest` and binary releases. The Dockerfile frontend source
|
|
code is temporarily located at
|
|
[https://github.com/moby/buildkit/tree/master/frontend/dockerfile](https://github.com/moby/buildkit/tree/master/frontend/dockerfile)
|
|
with separate new features defined with go build tags.
|
|
|
|
Tracking issues:
|
|
|
|
- [#32925](https://github.com/moby/moby/issues/32925) discussion: builder future: buildkit
|
|
|
|
## 1.3 Rootless Mode
|
|
|
|
Running the daemon requires elevated privileges for many tasks. We would like to
|
|
support running the daemon as a normal, unprivileged user without requiring `suid`
|
|
binaries.
|
|
|
|
Tracking issues:
|
|
|
|
- [#37375](https://github.com/moby/moby/issues/37375) Proposal: allow running `dockerd` as an unprivileged user (aka rootless mode)
|
|
|
|
## 1.4 Testing
|
|
|
|
Moby has many tests, both unit and integration. Moby needs more tests which can
|
|
cover the full spectrum functionality and edge cases out there.
|
|
|
|
Tests in the `integration-cli` folder should also be migrated into (both in
|
|
location and style) the `integration` folder. These newer tests are simpler to
|
|
run in isolation, simpler to read, simpler to write, and more fully exercise the
|
|
API. Meanwhile tests of the docker CLI should generally live in docker/cli.
|
|
|
|
Tracking issues:
|
|
|
|
- [#32866](https://github.com/moby/moby/issues/32866) Replace integration-cli suite with API test suite
|
|
|
|
## 1.5 Internal decoupling
|
|
|
|
A lot of work has been done in trying to decouple Moby internals. This process of creating
|
|
standalone projects with a well defined function that attract a dedicated community should continue.
|
|
As well as integrating `containerd` we would like to integrate [BuildKit](https://github.com/moby/buildkit)
|
|
as the next standalone component.
|
|
We see gRPC as the natural communication layer between decoupled components.
|
|
|
|
In addition to pushing out large components into other projects, much of the
|
|
internal code structure, and in particular the
|
|
["Daemon"](https://godoc.org/github.com/docker/docker/daemon#Daemon) object,
|
|
should be split into smaller, more manageable, and more testable components.
|