aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Eckert <fe@dev.tdt.de>2020-06-19 13:17:32 +0200
committerFlorian Eckert <fe@dev.tdt.de>2020-07-07 15:03:28 +0200
commitb9b565e06884c33b5991a40d01526dc5154cf5ab (patch)
tree8ad05cf89075638e5df22ee5d3e02d00a22d5d48
parent98d4a7952d41788ee7ac991731f1525cf788d847 (diff)
docker-ce: add uci support for dockerd
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
-rw-r--r--utils/docker-ce/Makefile7
-rw-r--r--utils/docker-ce/files/dockerd.init48
-rw-r--r--utils/docker-ce/files/etc/config/dockerd7
3 files changed, 61 insertions, 1 deletions
diff --git a/utils/docker-ce/Makefile b/utils/docker-ce/Makefile
index 43f51c688..ec09baa41 100644
--- a/utils/docker-ce/Makefile
+++ b/utils/docker-ce/Makefile
@@ -49,6 +49,10 @@ define Package/docker-ce
MENU:=1
endef
+define Package/docker-ce/conffiles
+/etc/config/dockerd
+endef
+
define Package/docker-ce/description
Docker Engine is used by millions enables containerized applications
to run anywhere consistently on any infrastructure.
@@ -123,6 +127,9 @@ define Package/docker-ce/install
$(INSTALL_DIR) $(1)/etc/docker
$(INSTALL_CONF) ./files/daemon.json $(1)/etc/docker/
+ $(INSTALL_DIR) $(1)/etc/config
+ $(INSTALL_CONF) ./files/etc/config/dockerd $(1)/etc/config/dockerd
+
# Must be after systcl 11-br-netfilter.conf from kmod-br-netfilter
$(INSTALL_DIR) $(1)/etc/sysctl.d
$(INSTALL_DATA) ./files/etc/sysctl.d/sysctl-br-netfilter-ip.conf \
diff --git a/utils/docker-ce/files/dockerd.init b/utils/docker-ce/files/dockerd.init
index 5fc327ff6..3b77f1131 100644
--- a/utils/docker-ce/files/dockerd.init
+++ b/utils/docker-ce/files/dockerd.init
@@ -3,12 +3,58 @@
USE_PROCD=1
START=25
+DOCKERD_CONF="/tmp/dockerd/daemon.json"
+
+json_add_array_string() {
+ json_add_string "" "$1"
+}
+
+process_config() {
+ local alt_config_file data_root log_level
+
+ rm -f "$DOCKERD_CONF"
+
+ [ -f /etc/config/dockerd ] || {
+ # Use the daemon default configuration
+ DOCKERD_CONF=""
+ return 0
+ }
+
+ config_load 'dockerd'
+
+ config_get alt_config_file globals alt_config_file
+ [ -n "$alt_config_file" ] && [ -f "$alt_config_file" ] && {
+ ln -s "$alt_config_file" "$DOCKERD_CONF"
+ return 0
+ }
+
+ config_get data_root globals data_root "/opt/docker/"
+ config_get log_level globals log_level "warn"
+
+ . /usr/share/libubox/jshn.sh
+ json_init
+ json_add_string "data-root" "$data_root"
+ json_add_string "log-level" "$log_level"
+ json_add_array "registry-mirrors"
+ config_list_foreach globals registry_mirror json_add_array_string
+ json_close_array
+
+ mkdir -p /tmp/dockerd
+ json_dump > "$DOCKERD_CONF"
+}
+
start_service() {
local nofile=$(cat /proc/sys/fs/nr_open)
+ process_config
+
procd_open_instance
procd_set_param stderr 1
- procd_set_param command /usr/bin/dockerd
+ if [ -z "$DOCKERD_CONF" ]; then
+ procd_set_param command /usr/bin/dockerd
+ else
+ procd_set_param command /usr/bin/dockerd --config-file="$DOCKERD_CONF"
+ fi
procd_set_param limits nofile="${nofile} ${nofile}"
procd_close_instance
}
diff --git a/utils/docker-ce/files/etc/config/dockerd b/utils/docker-ce/files/etc/config/dockerd
new file mode 100644
index 000000000..28f04829b
--- /dev/null
+++ b/utils/docker-ce/files/etc/config/dockerd
@@ -0,0 +1,7 @@
+
+config globals 'globals'
+# option alt_config_file "/etc/docker/daemon.json"
+ option data_root "/opt/docker/"
+ option log_level "warn"
+# list registry_mirror "https://<my-docker-mirror-host>"
+# list registry_mirror "https://hub.docker.com"