docker-ce: add uci support for dockerd
authorFlorian Eckert <redacted>
Fri, 19 Jun 2020 11:17:32 +0000 (13:17 +0200)
committerFlorian Eckert <redacted>
Tue, 7 Jul 2020 13:03:28 +0000 (15:03 +0200)
Signed-off-by: Florian Eckert <redacted>
utils/docker-ce/Makefile
utils/docker-ce/files/dockerd.init
utils/docker-ce/files/etc/config/dockerd [new file with mode: 0644]

index 43f51c6882e6abe89fe3e2251ac977b3f34ffb74..ec09baa4135bfcbd497ed64e239f50b23309450a 100644 (file)
@@ -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 \
index 5fc327ff63406a6b68633d8560739db009c96be8..3b77f113118c82272cf102c1d2bd923265b19635 100644 (file)
@@ -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 (file)
index 0000000..28f0482
--- /dev/null
@@ -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"
git clone https://git.99rst.org/PROJECT