Moby Project - a collaborative project for the container ecosystem to assemble container-based systems
Go to file
Cory Snider 1f22b15030 Lock OS threads when exec'ing with Pdeathsig
On Linux, when (os/exec.Cmd).SysProcAttr.Pdeathsig is set, the signal
will be sent to the process when the OS thread on which cmd.Start() was
executed dies. The runtime terminates an OS thread when a goroutine
exits after being wired to the thread with runtime.LockOSThread(). If
other goroutines are allowed to be scheduled onto a thread which called
cmd.Start(), an unrelated goroutine could cause the thread to be
terminated and prematurely signal the command. See
https://github.com/golang/go/issues/27505 for more information.

Prevent started subprocesses with Pdeathsig from getting signaled
prematurely by wiring the starting goroutine to the OS thread until the
subprocess has exited. No other goroutines can be scheduled onto a
locked thread so it will remain alive until unlocked or the daemon
process exits.

Signed-off-by: Cory Snider <csnider@mirantis.com>
2022-10-05 12:18:03 -04:00
.github ci: reduce cache throttling limits 2022-09-21 22:41:45 +02:00
api api/server: fix empty-lines (revive) 2022-09-28 01:58:51 +02:00
builder builder: fix empty-lines (revive) 2022-09-28 01:58:50 +02:00
cli add instructions to generate events message table bin 2022-04-14 19:52:36 +02:00
client client: fix empty-lines (revive) 2022-09-28 01:58:52 +02:00
cmd cmd/dockerd: fix empty-lines (revive) 2022-09-28 01:58:52 +02:00
container pkg/containerfs: drop ContainerFS type alias 2022-09-23 16:56:53 -04:00
contrib fix debian sysvinit script fails to restart docker daemon when stopped 2022-09-11 10:09:34 +00:00
daemon Lock OS threads when exec'ing with Pdeathsig 2022-10-05 12:18:03 -04:00
distribution runconfig, oci, image, layer, distribution: fix empty-lines (revive) 2022-09-28 01:58:52 +02:00
dockerversion gofmt GoDoc comments with go1.19 2022-07-08 19:56:23 +02:00
docs swagger: update links to logo 2022-09-27 11:56:14 +02:00
errdefs
hack Merge pull request #44129 from thaJeztah/enable_deprecated_check 2022-09-27 22:39:41 +02:00
image runconfig, oci, image, layer, distribution: fix empty-lines (revive) 2022-09-28 01:58:52 +02:00
integration integration: fix empty-lines (revive) 2022-09-28 01:58:50 +02:00
integration-cli integration-cli: fix empty-lines (revive) 2022-09-28 01:58:49 +02:00
internal/test/suite
layer runconfig, oci, image, layer, distribution: fix empty-lines (revive) 2022-09-28 01:58:52 +02:00
libcontainerd Lock OS threads when exec'ing with Pdeathsig 2022-10-05 12:18:03 -04:00
libnetwork Lock OS threads when exec'ing with Pdeathsig 2022-10-05 12:18:03 -04:00
oci runconfig, oci, image, layer, distribution: fix empty-lines (revive) 2022-09-28 01:58:52 +02:00
opts opts: fix empty-lines (revive) 2022-09-28 01:58:51 +02:00
pkg Lock OS threads when exec'ing with Pdeathsig 2022-10-05 12:18:03 -04:00
plugin plugin: fix empty-lines (revive) 2022-09-28 01:58:50 +02:00
profiles seccomp: allow "bpf", "perf_event_open", gated by CAP_BPF, CAP_PERFMON 2022-08-18 18:34:09 +02:00
project project: Add label kind/regression 2022-06-30 15:08:02 +02:00
quota gofmt GoDoc comments with go1.19 2022-07-08 19:56:23 +02:00
reference
registry runconfig, oci, image, layer, distribution: fix empty-lines (revive) 2022-09-28 01:58:52 +02:00
reports
restartmanager
rootless rootless: remove redundant sync.Once 2022-04-25 13:53:32 +02:00
runconfig runconfig, oci, image, layer, distribution: fix empty-lines (revive) 2022-09-28 01:58:52 +02:00
testutil testutil: fix empty-lines (revive) 2022-09-28 01:58:50 +02:00
vendor Merge pull request #44191 from corhere/drop-containerfs-iface 2022-09-27 10:28:35 +02:00
volume volume: fix empty-lines (revive) 2022-09-28 01:58:50 +02:00
.DEREK.yml
.dockerignore
.gitattributes chore: fix linguist for Dockerfile 2022-04-27 06:38:41 +02:00
.gitignore use go-winres for windows build and cleanup autogen and winresources 2022-04-14 19:52:36 +02:00
.mailmap update AUTHORS and mailmap 2022-06-03 12:29:40 +02:00
AUTHORS update AUTHORS and mailmap 2022-06-03 12:29:40 +02:00
CHANGELOG.md
CONTRIBUTING.md
Dockerfile golangci-lint: update to v1.49.0 2022-09-23 23:31:27 +02:00
Dockerfile.e2e Update to go 1.19.1 to address CVE-2022-27664, CVE-2022-32190 2022-09-07 15:27:19 +02:00
Dockerfile.simple Update to go 1.19.1 to address CVE-2022-27664, CVE-2022-32190 2022-09-07 15:27:19 +02:00
Dockerfile.windows Update to go 1.19.1 to address CVE-2022-27664, CVE-2022-32190 2022-09-07 15:27:19 +02:00
Jenkinsfile Jenkinsfile: use Ubuntu 20.04 for DCO stage 2022-09-21 17:28:04 +02:00
LICENSE
MAINTAINERS Add Cory Snider (corhere) as maintainer 2022-07-14 19:38:48 +02:00
Makefile ci(test): validate job matrix 2022-09-09 02:24:17 +02:00
NOTICE
README.md
ROADMAP.md
SECURITY.md
TESTING.md
VENDORING.md
codecov.yml codecov: disable "patch" status 2022-06-07 17:24:46 +02:00
docker-bake.hcl ci: gha test workflow for integration and unit test 2022-09-07 22:52:34 +02:00
vendor.mod Merge pull request #44189 from thaJeztah/sequential_release 2022-09-25 00:05:25 -07:00
vendor.sum Merge pull request #44189 from thaJeztah/sequential_release 2022-09-25 00:05:25 -07:00

README.md

The Moby Project

Moby Project logo

Moby is an open-source project created by Docker to enable and accelerate software containerization.

It provides a "Lego set" of toolkit components, the framework for assembling them into custom container-based systems, and a place for all container enthusiasts and professionals to experiment and exchange ideas. Components include container build tools, a container registry, orchestration tools, a runtime and more, and these can be used as building blocks in conjunction with other tools and projects.

Principles

Moby is an open project guided by strong principles, aiming to be modular, flexible and without too strong an opinion on user experience. It is open to the community to help set its direction.

  • Modular: the project includes lots of components that have well-defined functions and APIs that work together.
  • Batteries included but swappable: Moby includes enough components to build fully featured container system, but its modular architecture ensures that most of the components can be swapped by different implementations.
  • Usable security: Moby provides secure defaults without compromising usability.
  • Developer focused: The APIs are intended to be functional and useful to build powerful tools. They are not necessarily intended as end user tools but as components aimed at developers. Documentation and UX is aimed at developers not end users.

Audience

The Moby Project is intended for engineers, integrators and enthusiasts looking to modify, hack, fix, experiment, invent and build systems based on containers. It is not for people looking for a commercially supported system, but for people who want to work and learn with open source code.

Relationship with Docker

The components and tools in the Moby Project are initially the open source components that Docker and the community have built for the Docker Project. New projects can be added if they fit with the community goals. Docker is committed to using Moby as the upstream for the Docker Product. However, other projects are also encouraged to use Moby as an upstream, and to reuse the components in diverse ways, and all these uses will be treated in the same way. External maintainers and contributors are welcomed.

The Moby project is not intended as a location for support or feature requests for Docker products, but as a place for contributors to work on open source code, fix bugs, and make the code more useful. The releases are supported by the maintainers, community and users, on a best efforts basis only, and are not intended for customers who want enterprise or commercial support; Docker EE is the appropriate product for these use cases.


Legal

Brought to you courtesy of our legal counsel. For more context, please see the NOTICE document in this repo.

Use and transfer of Moby may be subject to certain restrictions by the United States and other governments.

It is your responsibility to ensure that your use and/or transfer does not violate applicable laws.

For more information, please see https://www.bis.doc.gov

Licensing

Moby is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.