docker-1.4.1 needs the following kernel features enabled: - CONFIG_CPUSETS If this is not enabled, an error message like this will be reported when running images: $ docker run learn/tutorial echo "hello world" FATA[0001] Error response from daemon: Cannot start container 1d0c0ca5cc7f39a271ec40c1479a80bffb7190fab97392b3453a1fc0b2dc8e78: mountpoint for cpuset not found - CONFIG_POSIX_MQUEUE Error message: $ docker run learn/tutorial echo "hello world" FATA[0002] Error response from daemon: Cannot start container 3292862107b526d9c5e595bac3a8e45db6923d86d73bc67a8b0a8a66e4cfd1a0: setup mount namespace mount system mounting mqueue into /var/lib/docker/devicemapper/mnt/3292862107b526d9c5e595bac3a8e45db6923d86d73bc67a8b0a8a66e4cfd1a0/rootfs/dev/mqueue no such device Reproducible: Always Steps to Reproduce: 1. Run docker with missing kernel features 2. Error reported Actual Results: Error message Expected Results: Running the image Portage 2.2.14 (python 3.3.5-final-0, hardened/linux/amd64/no-multilib, gcc-4.8.3, glibc-2.19-r1, 3.14.17-hardened-r1 x86_64) ================================================================= System uname: Linux-3.14.17-hardened-r1-x86_64-Intel-R-_Xeon-R-_CPU_E5-2620_0_@_2.00GHz-with-gentoo-2.2 KiB Mem: 2049232 total, 302104 free KiB Swap: 4194300 total, 4194300 free Timestamp of tree: Mon, 12 Jan 2015 08:15:01 +0000 ld GNU ld (Gentoo 2.24 p1.4) 2.24 app-shells/bash: 4.2_p53 dev-java/java-config: 2.2.0 dev-lang/perl: 5.18.2-r2 dev-lang/python: 2.7.9-r1, 3.3.5-r1, 3.4.1 dev-util/cmake: 2.8.12.2-r1 dev-util/pkgconfig: 0.28-r1 sys-apps/baselayout: 2.2 sys-apps/openrc: 0.12.4 sys-apps/sandbox: 2.6-r1 sys-devel/autoconf: 2.69 sys-devel/automake: 1.13.4 sys-devel/binutils: 2.24-r3 sys-devel/gcc: 4.7.3-r1, 4.8.3 sys-devel/gcc-config: 1.7.3 sys-devel/libtool: 2.4.2-r1 sys-devel/make: 4.0-r1 sys-kernel/linux-headers: 3.16 (virtual/os-headers) sys-libs/glibc: 2.19-r1 Repositories: gentoo gentoo-extras-overlay x-portage ACCEPT_KEYWORDS="amd64" ACCEPT_LICENSE="* -@EULA" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-O2 -pipe" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.5/ext-active/ /etc/php/cgi-php5.5/ext-active/ /etc/php/cli-php5.5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo" CXXFLAGS="-O2 -pipe" DISTDIR="/usr/portage/distfiles" FCFLAGS="-O2 -pipe" FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr" FFLAGS="-O2 -pipe" GENTOO_MIRRORS="ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo http://mirror.switch.ch/ftp/mirror/gentoo/ ftp://ftp-stud.hs-esslingen.de/pub/Mirrors/gentoo/" LANG="en_US.UTF-8" LDFLAGS="-Wl,-O1 -Wl,--as-needed" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/var/lib/layman/gentoo-extras-overlay /usr/local/portage" SYNC="rsync://rsync.de.gentoo.org/gentoo-portage" USE="acl amd64 berkdb bzip2 cli cracklib crypt cxx dri gdbm hardened iconv idn ipv6 justify lzma mmx modules mysql ncurses nls nptl openmp pam pax_kernel pcre readline session sse sse2 ssl tcpd threads udev unicode urandom vhosts xattr xtpax zlib" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_3" RUBY_TARGETS="ruby20" USERLAND="GNU" VIDEO_CARDS="fbdev glint intel mach64 mga nouveau nv r128 radeon savage sis tdfx trident vesa via vmware dummy v4l" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON
Our kernel requirements come directly from upstream's "config/check-config.sh" script (https://github.com/docker/docker/blob/973c32c8a07bca01aa5889689f37b99694673490/contrib/check-config.sh). I recently resynced docker-9999.ebuild in the docker-overlay to the latest which included CONFIG_POSIX_MQUEUE, but CONFIG_CPUSETS isn't in the upstream script. I think the next step here is to update the upstream script to check for CONFIG_CPUSETS as well, and then I'll happily add it into the ebuild from there.
I confirm, i've had the problem today. Containers wouldn't start with the error "mountpoint for cpuset not found". I had CONFIG_CPUSETS disabled in the kernel. Once enabled, everything worked well. Indeed, this should be reported upstream for their (very useful) check script.
Tianon - I agree that this is not checked by the upstream script[1] - but nevertheless it /does/ appear to be required. I'm testing docker-1.5.0 with the same results. Perhaps we could at least add an ewarn directing people to enable CONFIG_CPUSETS IF they see the error? [ Would have saved me some digging/head-scratching. ] [1] https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh
Would have saved me quite some time too. If upstream has fixed it, adding the test to the ebuild would be a kind of bugfix backport. Makes sense, no ?
Filed upstream: https://github.com/docker/docker/pull/11374
And it's already done, reviewed and even merged !
Updated in the overlay, will be in docker-1.6.0.ebuild for sure. I've leave it up to xarthisius whether he thinks we should sync this change to 1.5.0 in tree. :)
+ 14 Mar 2015; Kacper Kowalik <xarthisius@gentoo.org> docker-1.5.0.ebuild: + Check if CPUSETS are enabled in kernel wrt bug #536546 by Dirk Best <mail + @dirk-best.de>. Thanks to Tianon <admwiggin@gmail.com> for reporting and + fixing it upstream