93 lines
2.8 KiB
Diff
93 lines
2.8 KiB
Diff
From 16fc5c50a96aad21f8f6b8db202269cc8fee1c36 Mon Sep 17 00:00:00 2001
|
|
From: Christian Stewart <christian@paral.in>
|
|
Date: Tue, 9 May 2017 18:03:55 -0400
|
|
Subject: [PATCH] docker-engine: add support for init processes
|
|
|
|
When a docker container is run with the --init flag, the Docker engine
|
|
uses the docker-init binary as PID 1 inside the container. This is
|
|
necessary in may cases to avoid issues with signal handling, zombie
|
|
processes, and other quirks when running as PID 1.
|
|
|
|
The docker-init binary is backed by tini on default, but optionally can
|
|
be changed to docker-init by user preference.
|
|
|
|
Furthermore, this patch fixes the following Docker error:
|
|
|
|
dockerd: level=warning msg="failed to retrieve docker-init version"
|
|
|
|
Signed-off-by: Christian Stewart <christian@paral.in>
|
|
---
|
|
package/docker-engine/Config.in | 26 ++++++++++++++++++++++++++
|
|
package/docker-engine/docker-engine.mk | 11 +++++++++++
|
|
2 files changed, 37 insertions(+)
|
|
|
|
diff --git a/package/docker-engine/Config.in b/package/docker-engine/Config.in
|
|
index 05670a7..7d9a87f 100644
|
|
--- a/package/docker-engine/Config.in
|
|
+++ b/package/docker-engine/Config.in
|
|
@@ -33,6 +33,32 @@ config BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT
|
|
|
|
if BR2_PACKAGE_DOCKER_ENGINE_DAEMON
|
|
|
|
+choice
|
|
+ bool "docker-init to use"
|
|
+ default BR2_PACKAGE_DOCKER_ENGINE_INIT_TINI
|
|
+ help
|
|
+ The docker engine uses a minimal init process as PID 1
|
|
+ inside containers. There are several implementations
|
|
+ of this init process.
|
|
+
|
|
+config BR2_PACKAGE_DOCKER_ENGINE_INIT_TINI
|
|
+ bool "tini"
|
|
+ select BR2_PACKAGE_TINI
|
|
+ help
|
|
+ Use Tini as the container init process.
|
|
+
|
|
+ https://github.com/krallin/tini
|
|
+
|
|
+config BR2_PACKAGE_DOCKER_ENGINE_INIT_DUMB_INIT
|
|
+ bool "dumb-init"
|
|
+ select BR2_PACKAGE_DUMB_INIT
|
|
+ help
|
|
+ Use dumb-init as the container init process.
|
|
+
|
|
+ https://github.com/Yelp/dumb-init
|
|
+
|
|
+endchoice
|
|
+
|
|
config BR2_PACKAGE_DOCKER_ENGINE_DRIVER_BTRFS
|
|
bool "btrfs filesystem driver"
|
|
depends on BR2_USE_MMU # btrfs-progs
|
|
diff --git a/package/docker-engine/docker-engine.mk b/package/docker-engine/docker-engine.mk
|
|
index 8928f07..a2776ed 100644
|
|
--- a/package/docker-engine/docker-engine.mk
|
|
+++ b/package/docker-engine/docker-engine.mk
|
|
@@ -50,6 +50,13 @@ endif
|
|
ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y)
|
|
DOCKER_ENGINE_BUILD_TAGS += daemon
|
|
DOCKER_ENGINE_BUILD_TARGETS += dockerd
|
|
+
|
|
+ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_INIT_DUMB_INIT),y)
|
|
+DOCKER_ENGINE_INIT = dumb-init
|
|
+else
|
|
+DOCKER_ENGINE_INIT = tini
|
|
+endif
|
|
+
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_EXPERIMENTAL),y)
|
|
@@ -119,6 +126,10 @@ define DOCKER_ENGINE_INSTALL_TARGET_CMDS
|
|
$(foreach target,$(DOCKER_ENGINE_BUILD_TARGETS), \
|
|
$(INSTALL) -D -m 0755 $(@D)/bin/$(target) $(TARGET_DIR)/usr/bin/$(target)
|
|
)
|
|
+
|
|
+ $(if $(filter $(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y), \
|
|
+ ln -fs $(DOCKER_ENGINE_INIT) $(TARGET_DIR)/usr/bin/docker-init
|
|
+ )
|
|
endef
|
|
|
|
$(eval $(generic-package))
|
|
--
|
|
2.9.0.windows.1
|
|
|