docker-ce: Added Docker community edition

Signed-off-by: Gerard Ryan <G.M0N3Y.2503@gmail.com>
This commit is contained in:
Gerard Ryan 2018-10-14 13:18:43 +10:00 committed by Yousong Zhou
parent e6edb0b442
commit f2793d55fe
4 changed files with 215 additions and 0 deletions

84
utils/docker-ce/Config.in Normal file
View File

@ -0,0 +1,84 @@
if PACKAGE_docker-ce
config DOCKER_KERNEL_OPTIONS
bool "Enable Basic kernel support for Docker"
default n
select KERNEL_CGROUPS
select KERNEL_CGROUP_CPUACCT
select KERNEL_CGROUP_SCHED
select KERNEL_NAMESPACES
select KERNEL_CPUSETS
select KERNEL_MEMCG
select KERNEL_KEYS
select KERNEL_LXC_MISC
select KERNEL_POSIX_MQUEUE
help
Select needed kernel options for Docker. Options include
cgroups, namespaces and other miscellaneous options.
see also https://github.com/docker/engine/blob/master/contrib/check-config.sh
config DOCKER_SECCOMP
bool "Enable support for seccomp in Docker"
default n
select KERNEL_SECCOMP
select PACKAGE_libseccomp
help
Build Docker with support for seccomp filters.
Select libseccomp which also pulls-in the needed kernel features.
config DOCKER_RES_SHAPE
bool "Enables support for resource shaping"
default n
select KERNEL_MEMCG_SWAP
select KERNEL_MEMCG_SWAP_ENABLED
select KERNEL_BLK_DEV_THROTTLING
select KERNEL_CGROUP_PERF
select KERNEL_FAIR_GROUP_SCHED
select KERNEL_CFS_BANDWIDTH
select KERNEL_RT_GROUP_SCHED
menu "Network"
config DOCKER_NET_OVERLAY
bool "Enables the Overlay network feature"
default n
select PACKAGE_kmod-udptunnel4
help
Selects kernel options for the Overlay network feature.
Includes udptunnel4
config DOCKER_NET_ENCRYPT
bool "Enable encrypted networking kernel support"
depends on DOCKER_NET_OVERLAY
default n
select PACKAGE_kmod-ipsec
select PACKAGE_kmod-ipsec4
select PACKAGE_kmod-crypto-gcm
select PACKAGE_kmod-crypto-ghash
help
Select needed kernel options for encrypted networking support.
config DOCKER_NET_MACVLAN
bool "Enables macvlan kernel support"
default n
select PACKAGE_kmod-macvlan
select PACKAGE_kmod-dummy
config DOCKER_NET_TFTP
bool "Enable ftp/tftp client kernel support"
default n
select PACKAGE_kmod-nf-nathelper
select PACKAGE_kmod-nf-nathelper-extra
endmenu
menu "Storage"
config DOCKER_STO_EXT4
bool "Enables support for ext3 or ext4 as the backing filesystem"
default n
select KERNEL_EXT4_FS_POSIX_ACL
config DOCKER_STO_BTRFS
bool "Enables support for btrfs as the backing filesystem"
default n
select PACKAGE_kmod-fs-btrfs
select KERNEL_BTRFS_FS_POSIX_ACL
endmenu
endif

107
utils/docker-ce/Makefile Normal file
View File

@ -0,0 +1,107 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=docker-ce
PKG_VERSION:=18.09.6
PKG_RELEASE:=1
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=components/cli/LICENSE components/engine/LICENSE
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/docker/docker-ce/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=e8d2dd41e09e838e9043d4a5cf8433d8860afa20a611025621f7817b7ab16012
PKG_SOURCE_VERSION:=481bc77156
PKG_MAINTAINER:=Gerard Ryan <G.M0N3Y.2503@gmail.com>
PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_PARALLEL:=1
GO_PKG:=github.com/docker
include $(INCLUDE_DIR)/package.mk
include ../../lang/golang/golang-package.mk
define Package/docker-ce/config
source "$(SOURCE)/Config.in"
endef
define Package/docker-ce
SECTION:=utils
CATEGORY:=Utilities
TITLE:=Docker Community Edition
URL:=https://www.docker.com/
DEPENDS:=$(GO_ARCH_DEPENDS) @TARGET_x86_64 +btrfs-progs +libdevmapper +containerd +cgroupfs-mount +ca-certificates +iptables-mod-extra +DOCKER_SECCOMP:libseccomp \
+kmod-ikconfig +kmod-veth +kmod-br-netfilter +kmod-nf-ipvs
USERID:=docker:docker
MENU:=1
endef
define Package/docker-ce/description
Docker Engine is used by millions enables containerized applications
to run anywhere consistently on any infrastructure.
endef
define Build/Configure
# move so GoPackage/Build/Configure will get the correct path
mv $(PKG_BUILD_DIR)/components/engine $(PKG_BUILD_DIR)/
mv $(PKG_BUILD_DIR)/components/cli $(PKG_BUILD_DIR)/
# docker generates files at build time so we'll just symlink for now and call GoPackage/Build/Configure later
mkdir -p $(GO_PKG_BUILD_DIR)/bin \
$(GO_PKG_BUILD_DIR)/src \
$(GO_PKG_BUILD_DIR)/src/$(GO_PKG)/ \
$(GO_PKG_CACHE_DIR) \
$(GO_PKG_TMP_DIR)
$(LN) $(PKG_BUILD_DIR)/cli $(GO_PKG_BUILD_DIR)/src/$(GO_PKG)/cli
$(LN) $(PKG_BUILD_DIR)/engine $(GO_PKG_BUILD_DIR)/src/$(GO_PKG)/docker
endef
ifeq ($(CONFIG_DOCKER_SECCOMP),y)
BUILDTAGS:=seccomp
else
BUILDTAGS:=
endif
define Build/Compile
( \
export GOPATH=$(GO_PKG_BUILD_DIR) \
GOCACHE=$(GO_PKG_CACHE_DIR) \
GOTMPDIR=$(GO_PKG_TMP_DIR) \
GOROOT_FINAL=$(GO_TARGET_ROOT) \
CC=$(TARGET_CC) \
CXX=$(TARGET_CXX) \
$(call GoPackage/Environment) \
GITCOMMIT=$(PKG_SOURCE_VERSION) \
DOCKER_GITCOMMIT=$(PKG_SOURCE_VERSION) \
DOCKER_BUILDTAGS='$(BUILDTAGS)' \
VERSION=$(PKG_VERSION) \
\
&& echo "Compiling CLI..." \
&& cd $(PKG_BUILD_DIR)/cli \
&& ./scripts/build/binary \
\
&& echo "Compiling Engine..." \
&& cd $(PKG_BUILD_DIR)/engine \
&& ./hack/make.sh binary \
)
# done here to include autogenerated files also
rm $(GO_PKG_BUILD_DIR)/src/$(GO_PKG)/cli
rm $(GO_PKG_BUILD_DIR)/src/$(GO_PKG)/docker
$(call GoPackage/Build/Configure)
endef
define Package/docker-ce/install
$(INSTALL_DIR) $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/cli/build/docker $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/engine/bundles/binary-daemon/dockerd $(1)/usr/bin/
$(INSTALL_DIR) $(1)/opt/docker/
$(INSTALL_DIR) $(1)/usr/share/docker/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/engine/contrib/check-config.sh $(1)/usr/share/docker/
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/dockerd.init $(1)/etc/init.d/dockerd
endef
$(eval $(call BuildPackage,docker-ce))

View File

@ -0,0 +1,11 @@
#!/bin/sh /etc/rc.common
USE_PROCD=1
START=25
# docker can't run with a symlink in the path so we just use /opt/docker/
start_service() {
procd_open_instance
procd_set_param command /usr/bin/dockerd -g /opt/docker/
procd_close_instance
}

View File

@ -0,0 +1,13 @@
Index: docker-ce-18.09.0/components/engine/hack/make.sh
===================================================================
--- docker-ce-18.09.0.orig/components/engine/hack/make.sh
+++ docker-ce-18.09.0/components/engine/hack/make.sh
@@ -129,7 +129,7 @@ fi
# with a newer libdevmapper than the one it was built with.
if \
command -v gcc &> /dev/null \
- && ! ( echo -e '#include <libdevmapper.h>\nint main() { dm_task_deferred_remove(NULL); }'| gcc -xc - -o /dev/null $(pkg-config --libs devmapper) &> /dev/null ) \
+ && ! ( echo -e '#include <libdevmapper.h>\nint main() { dm_task_deferred_remove(NULL); }'| gcc -xc - -o /dev/null $(pkg-config --libs libdevmapper) &> /dev/null ) \
; then
add_buildtag libdm dlsym_deferred_remove
fi