This has been asked in the past and I did have a "mini" layer that
could be used in addition to meta-virt to allow you to get what you
need in an image fairly easily. We were going to do some work to make
this easier but I haven't looked in a while so I can't say where
things are at off the top of my head. At any rate I am just back from
some travel but I will try to take a look at this tomorrow, after
which I should be able to provide some better guidance.

Mark
On Fri, Jan 11, 2019 at 7:39 PM Muhlenkamp, Lewis
<lewis.muhlenk...@stryker.com> wrote:
>
> Hello,
>
> TLDR: How do I get docker fully functional in my openembedded linux image?
>
> I've been trying to get docker included into my image.  All of my attempts 
> lead to the same error messages appearing in the log file, and docker not 
> starting.
>
> The error messages are
>
> === Start docker messages ===
> Jan 10 15:56:25 intel-corei7-64 dockerd[210]: 
> time="2019-01-10T15:56:25.414778299Z" level=error msg="Failed to built-in 
> GetDriver graph btrfs /var/lib/docker"
> Jan 10 15:56:25 intel-corei7-64 dockerd[210]: 
> time="2019-01-10T15:56:25.460695720Z" level=warning msg="Your kernel does not 
> support cgroup cfs period"
> Jan 10 15:56:25 intel-corei7-64 dockerd[210]: 
> time="2019-01-10T15:56:25.460795185Z" level=warning msg="Your kernel does not 
> support cgroup cfs quotas"
> Jan 10 15:56:25 intel-corei7-64 dockerd[210]: 
> time="2019-01-10T15:56:25.460896539Z" level=warning msg="Your kernel does not 
> support cgroup cfs blkio weight"
> Jan 10 15:56:25 intel-corei7-64 dockerd[210]: 
> time="2019-01-10T15:56:25.461255643Z" level=warning msg="Your kernel does not 
> support cgroup cfs blkio throttle.read_bps_device"
> Jan 10 15:56:25 intel-corei7-64 dockerd[210]: 
> time="2019-01-10T15:56:25.461381616Z" level=warning msg="Your kernel does not 
> support cgroup cfs blkio throttle.write_bps_device"
> Jan 10 15:56:25 intel-corei7-64 dockerd[210]: 
> time="2019-01-10T15:56:25.461503746Z" level=warning msg="Your kernel does not 
> support cgroup cfs blkio throttle.read_iops_device"
> Jan 10 15:56:25 intel-corei7-64 dockerd[210]: 
> time="2019-01-10T15:56:25.461601879Z" level=warning msg="Your kernel does not 
> support cgroup cfs blkio throttle.write_iops_device"
> Jan 10 15:56:25 intel-corei7-64 dockerd[210]: 
> time="2019-01-10T15:56:25.475747665Z" level=warning msg="Running modprobe 
> bridge br_netfilter failed with message: modprobe: WARNING: Module 
> br_netfilter not found in directory 
> /lib/modules/4.14.78-intel-pk-standard\ninsmod 
> /lib/modules/4.14.78-intel-pk-standard/kernel/net/llc.ko \ninsmod 
> /lib/modules/4.14.78-intel-pk-standard/kernel/net/802/stp.ko \ninsmod 
> /lib/modules/4.14.78-intel-pk-standard/kernel/net/bridge/bridge.ko \n, error: 
> exit status 1"
> Jan 10 15:56:25 intel-corei7-64 dockerd[210]: 
> time="2019-01-10T15:56:25.659844723Z" level=warning msg="Could not load 
> necessary modules for IPSEC rules: Running modprobe xfrm_user failed with 
> message: `modprobe: WARNING: Module xfrm_user not found in directory 
> /lib/modules/4.14.78-intel-pk-standard`, error: exit status 1"
> Jan 10 15:56:25 intel-corei7-64 dockerd[210]: 
> time="2019-01-10T15:56:25.662494167Z" level=warning msg="Could not load 
> necessary modules for Conntrack: Running modprobe nf_conntrack_netlink failed 
> with message: `modprobe: WARNING: Module nf_conntrack_netlink not found in 
> directory /lib/modules/4.14.78-intel-pk-standard`, error: exit status 1"
> Jan 10 15:56:25 intel-corei7-64 dockerd[210]: failed to start daemon: Error 
> initializing network controller: Error creating default "bridge" network: 
> Failed to program NAT chain: Failed to inject DOCKER in PREROUTING chain: 
> iptables failed: iptables -wait -t nat -A PREROUTING -m addrtype -dst-type 
> LOCAL -j DOCKER: iptables: No chain/target/match by that name.
> === End docker messages ===
>
> I was using my own custom image type, but I got the same results when trying 
> to build and use core-image-minimal.
>
> I tried including the 
> meta-virtualization/recipes/kernel/linux/linux-yocto/docker.scc stuff in, but 
> since I set MACHINE to intel-corei7-64, I copied the docker.scc and 
> docker.cfg into my custom layer:
>
> meta-stryker/common/recipes-kernel/linux/linux-intel/docker.cfg
> meta-stryker/common/recipes-kernel/linux/linux-intel/kernel_baseline.scc
> meta-stryker/common/recipes-kernel/linux/linux-intel_%.bbappend
>
> That didn't seem to work either.  The modules always got built.  For example, 
> br_netfilter.ko is built:
>
> lmuhlenkamp@c71703b3ba7d:~/build-20181213a/tmp-glibc$ find . -name 
> br_netfilter.ko
> ./work/corei7-64-intel-common-oe-linux/linux-intel/4.14.78+gitAUTOINC+6a3254e7b3_56f15146cf-r0/image/lib/modules/4.14.78-intel-pk-standard/kernel/net/bridge/br_netfilter.ko
> ./work/corei7-64-intel-common-oe-linux/linux-intel/4.14.78+gitAUTOINC+6a3254e7b3_56f15146cf-r0/packages-split/kernel-module-br-netfilter-4.14.78-intel-pk-standard/lib/modules/4.14.78-intel-pk-standard/kernel/net/bridge/br_netfilter.ko
> ./work/corei7-64-intel-common-oe-linux/linux-intel/4.14.78+gitAUTOINC+6a3254e7b3_56f15146cf-r0/linux-corei7-64-intel-common-standard-build/net/bridge/br_netfilter.ko
> ./work/corei7-64-intel-common-oe-linux/linux-intel/4.14.78+gitAUTOINC+6a3254e7b3_56f15146cf-r0/package/lib/modules/4.14.78-intel-pk-standard/kernel/net/bridge/br_netfilter.ko
>
> But these modules are not included in my image.  For example, if I do "find / 
> -name br_netfilter.ko" on my target install, nothing is returned.
>
> My bblayers.conf is as follows:
>
> === Start conf/bblayers.conf ===
> # LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
> # changes incompatibly
> LCONF_VERSION = "7"
>
> BBPATH = "${TOPDIR}"
> BBFILES ?= ""
>
> BBLAYERS ?= " \
>   /home/lmuhlenkamp/oe-core/meta \
>   /home/lmuhlenkamp/meta-openembedded/meta-python \
>   /home/lmuhlenkamp/meta-openembedded/meta-gnome \
>   /home/lmuhlenkamp/meta-openembedded/meta-filesystems \
>   /home/lmuhlenkamp/meta-openembedded/meta-oe \
>   /home/lmuhlenkamp/meta-openembedded/meta-networking \
>   /home/lmuhlenkamp/meta-openembedded/meta-initramfs \
>   /home/lmuhlenkamp/meta-openembedded/meta-webserver \
>   /home/lmuhlenkamp/meta-intel \
>   /home/lmuhlenkamp/meta-virtualization \
>   /home/lmuhlenkamp/meta-cloud-services \
>   /home/lmuhlenkamp/meta-cloud-services/meta-openstack \
>   /home/lmuhlenkamp/meta-iot-cloud \
>   /home/lmuhlenkamp/meta-secure-core/meta-tpm \
>   /home/lmuhlenkamp/meta-stryker/common \
>   /home/lmuhlenkamp/meta-stryker/testing \
>   "
> === End conf/bblayers.conf ===
>
> The customizations to my local.conf file are as follows:
>
> === Start local.conf excerpt ===
> MACHINE ?= "intel-corei7-64"
> IMAGE_FSTYPES += "live"
> NOISO = "0"
> IMAGE_INSTALL_append = " glibc-utils localedef"
> GLIBC_GENERATE_LOCALES = "el_GR.UTF-8 en_GB.UTF-8 en_US.UTF-8 es_ES.UTF-8 
> de_DE.UTF-8 fa_IR fr_FR.UTF-8 hr_HR.UTF-8 ja_JP.UTF-8 ja_JP.EUC-JP 
> lt_LT.UTF-8 ru_RU.UTF-8 tr_TR.UTF-8"
> IMAGE_LINGUAS = "el-gr en-gb en-us es-es de-de fa-ir fr-fr hr-hr ja-jp 
> ja-jp.euc-jp lt-lt ru-ru tr-tr"
> DISTRO_FEATURES_append = " systemd virtualization"
> DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
> VIRTUAL-RUNTIME_init_manager = "systemd"
> VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"
> DISTRO_FEATURES_append = " opengl"
> CORE_IMAGE_EXTRA_INSTALL += "rpm python3 python3-pip python3-flask 
> python3-requests python3-coverage python3-pylint"
> CORE_IMAGE_EXTRA_INSTALL += "python-sphinx"
> CORE_IMAGE_EXTRA_INSTALL += "python-flake8"
> CORE_IMAGE_EXTRA_INSTALL += "python3-doxypypy"
> CORE_IMAGE_EXTRA_INSTALL += "trousers tpm-tools openssl-tpm-engine"
> KERNEL_FEATURES_append = " features/netfilter/netfilter.scc 
> features/overlayfs/overlayfs.scc"
> KERNEL_ENABLE_CGROUPS = "1"
> CORE_IMAGE_EXTRA_INSTALL += "docker"
> SERIAL_CONSOLES = "38400 tty1"
> CORE_IMAGE_EXTRA_INSTALL += "flaskhello"
> === End local.conf excerpt ===
>
> I did not have the KERNEL_FEATURES_append line in when using the 
> recipes-kernel/linux/linux-intel stuff.  I didn't have the 
> recipes-kernel/linux/linux-intel directory available when using the 
> KERNEL_FEATURES_append line in local.conf.  Based on what I read, they were 
> mutually exclusive.
>
> What am I missing?  Why are the kernel modules not being included in my image?
>
> I did try tweaking my docker.cfg file in my custom kernel recipe to include 
> cgroups, but that did not seem to change anything.  Here are the contents of 
> my custom docker.cfg file
>
> === Start 
> meta-stryker/common/recipes-kernel/linux/linux-intel/docker/docker.cfg ===
> CONFIG_CGROUP_DEVICE=y
>
> CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
> CONFIG_IP_NF_FILTER=m
> CONFIG_NF_NAT=m
> CONFIG_NF_CONNTRACK_IPV4=y
> CONFIG_NF_CT_NETLINK=y
>
> CONFIG_BRIDGE_NETFILTER=m
> CONFIG_XFRM_USER=m
>
> CONFIG_DM_THIN_PROVISIONING=m
>
>
> CONFIG_IP_NF_NAT=m
> CONFIG_IP_NF_TARGET_MASQUERADE=m
>
> CONFIG_OVERLAY_FS=y
> === End 
> meta-stryker/common/recipes-kernel/linux/linux-intel/docker/docker.cfg ===
>
> And for completeness, here are the contents of the other 2 files in that 
> recipe
>
> === Start meta-stryker/common/recipes-kernel/linux/linux-intel_%.bbappend ===
> FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
> SRC_URI += "file://kernel_baseline.scc"
> === End meta-stryker/common/recipes-kernel/linux/linux-intel_%.bbappend ===
>
> === Start 
> meta-stryker/common/recipes-kernel/linux/linux-intel/kernel_baseline.scc ===
> define KFEATURE_DESCRIPTION "Enable Features needed by docker in addition to 
> LXC features"
> define KFEATURE_COMPATIBILITY board
>
> kconf non-hardware docker.cfg
> === End 
> meta-stryker/common/recipes-kernel/linux/linux-intel/kernel_baseline.scc ===
>
> Any help that would allow me to get docker functionality working in my 
> openembedded linux image would be greatly appreciated.
>
> Thank you
>
> Lewis Muhlenkamp
>
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
-- 
_______________________________________________
Openembedded-devel mailing list
Openembedded-devel@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-devel

Reply via email to