Running docker sibling containers on CoreOS

455 views
Skip to first unread message

Tyler Martin

unread,
Feb 11, 2016, 4:53:18 AM2/11/16
to CoreOS Dev
I'm trying to setup a continuous integration environment on my CoreOS machine (949.0.0 alpha).  I'd like my CI agents which run in docker to be able to build other docker images.  How can I achieve this?  Right now, for example, I'm trying to achieve this by:
docker run --name tcagent -v $(which docker):/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -dt -p 9090:9090 quay.io/measur3d/tcagent 
However docker is complaining about not being able to find libsystemd.so.0 and other libraries.  On other host OSes docker seems to be statically compiled but on CoreOS the libraries are dynamically loaded.  I've checked all the referenced libraries via ldd:
$ ldd /usr/bin/docker
linux-vdso.so.1 (0x00007ffce7491000)
libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007f5f7caf0000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5f7c740000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f5f7c53c000)
libdevmapper.so.1.02 => /lib64/libdevmapper.so.1.02 (0x00007f5f7c2ee000)
libc.so.6 => /lib64/libc.so.6 (0x00007f5f7bf43000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f5f7bd1d000)
librt.so.1 => /lib64/librt.so.1 (0x00007f5f7bb15000)
libm.so.6 => /lib64/libm.so.6 (0x00007f5f7b811000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f5f7b5f8000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f5f7b3d2000)
libgcrypt.so.20 => /lib64/libgcrypt.so.20 (0x00007f5f7b0e4000)
libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007f5f7aedf000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007f5f7acd9000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5f7c95d000)
libudev.so.1 => /lib64/libudev.so.1 (0x00007f5f7cacb000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f5f7aa94000)
libattr.so.1 => /lib64/libattr.so.1 (0x00007f5f7a88e000)

Short of binding all these libraries and the symlink from host into the container, is there another way to do this?  I tried simply host volume mounting /usr/lib64/ into the container but then I got some other errors:

$ docker run --name tcagent  -v $(which docker):/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -e LD_LIBRARY_PATH="/usr/lib64" -v /usr/lib64:/usr/lib64 -it -p 9090:9090 quay.io/measur3d/tcagent
Error relocating /usr/lib64/libreadline.so.6: __snprintf_chk: symbol not found
Error relocating /usr/lib64/libreadline.so.6: __vfprintf_chk: symbol not found
Error relocating /usr/lib64/libreadline.so.6: __mbrlen: symbol not found
Error relocating /usr/lib64/libreadline.so.6: __fdelt_chk: symbol not found
Error relocating /usr/lib64/libreadline.so.6: __memmove_chk: symbol not found
Error relocating /usr/lib64/libreadline.so.6: __memcpy_chk: symbol not found
Error relocating /usr/lib64/libreadline.so.6: __vsnprintf_chk: symbol not found
Error relocating /usr/lib64/libreadline.so.6: __printf_chk: symbol not found
Error relocating /usr/lib64/libreadline.so.6: __longjmp_chk: symbol not found
Error relocating /usr/lib64/libreadline.so.6: __fprintf_chk: symbol not found
Error relocating /usr/lib64/libreadline.so.6: __sprintf_chk: symbol not found
Error relocating /usr/lib64/libncurses.so.5: __vfprintf_chk: symbol not found
Error relocating /usr/lib64/libncurses.so.5: __fdelt_chk: symbol not found
Error relocating /usr/lib64/libncurses.so.5: __memcpy_chk: symbol not found
Error relocating /usr/lib64/libncurses.so.5: __stpcpy_chk: symbol not found
Error relocating /usr/lib64/libncurses.so.5: __vsnprintf_chk: symbol not found
Error relocating /usr/lib64/libncurses.so.5: __strcpy_chk: symbol not found
Error relocating /usr/lib64/libncurses.so.5: __fprintf_chk: symbol not found
Error relocating /usr/lib64/libncurses.so.5: __strncat_chk: symbol not found
Error relocating /usr/lib64/libncurses.so.5: __sprintf_chk: symbol not found 

These look like low level c libraries that are now missing, but I'm not sure where those are.  Can someone help? Thanks.

Matthew Henniges

unread,
Feb 11, 2016, 9:22:46 AM2/11/16
to coreo...@googlegroups.com
I use Docker in Docker for this. I have my CI server running in one docker container, the docker:1.9-dind container running as well, and mount the docker sock from the dind container into the CI container via a volume.
Reply all
Reply to author
Forward
0 new messages