I am trying to run a CentOS Docker Image on my Arch Linux host. Running the following command returns nothing except the 139 error code:

$ docker run -ti centos:centos6 /bin/bash                                                                                                                                
[139] $  

I have the CentOS Docker image:

centos              centos6             0cbf37812bff        2 weeks ago         194MB

and a centOS container is there under the list of containers

$ docker ps -a|grep cento                                                                                                                                                
2ef0f0d7439c        centos:centos6         "/bin/bash"              5 minutes ago       Exited (139) 5 minutes ago                       elated_turing

Docker logs also returns nothing:

$ docker logs <container id>

I have tried using other Docker images and they work, it only seems to affect the CentOS image but I need to use centOS for my work.

  • What does docker logs <container> show?
    – slm
    Oct 29, 2018 at 11:55
  • @slm nothing is returned Oct 29, 2018 at 12:18
  • Can you try removing the container and then removing the image and re-downloading it again?
    – slm
    Oct 29, 2018 at 12:36
  • Also make sure SELinux is enabled - bugzilla.redhat.com/show_bug.cgi?id=1488516.
    – slm
    Oct 29, 2018 at 12:38
  • @slm SELinux isn't fully supported with Arch, and the installation process includes about 100 steps, so are you sure this will solve it? wiki.archlinux.org/index.php/… Oct 29, 2018 at 14:44

2 Answers 2


They were changes made on vsyscall linking in the Linux Kernel, starting with version 4.11, that caused issues with containers running Centos 6.x

2 solutions :

  • Use a 7.x Centos image
  • Try to boot the kernel with the parameter vsyscall=emulate

Example with GRUB, modify /etc/default/grub :


And then run update-grub

Example with systemd-boot, modify your conf in /boot/loader/entries and add the parameter to the options line :

title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options *EXISTINGPARAMS* vsyscall=emulate
  • 1
    damn! that was the issue... don't know how you figured this out, but thanks a bunch, you save my day (and probably a large fraction of my night!) Sep 8, 2019 at 20:04
  • Related docs on how to add Kernel parameters: wiki.archlinux.org/index.php/Kernel_parameters#GRUB and sudo update-grub worked for me on Manjaro
    – karfau
    Dec 6, 2019 at 11:44
  • Do you have any references to the underlying issue? Jun 9, 2020 at 2:11
  • The vsyscall parameter was set to 'none' by default in 4.11, and I think the problem is with the version of glibc in Centos 6 which does not support this. You could search the kernel mailing list for the exact patch were this happened. Jun 9, 2020 at 16:03

The best solution is to use vsyscall=emulate as advised in the other answer, of course, but if you can't reboot the machine containing CentOS 6 container (or just a CentOS 6 installation inside a chroot, as in my case) and don't mind some open-heart surgery, you can also "upgrade" CentOS 6 to use CentOS 7 glibc version to work around the problem. Note that replacing just libc.so is not enough, you need to copy at least the following files from a CentOS 7 system to /lib64 directory: ld-2.17.so, lib{c,dl,m,pthread}-2.17.so and then update the corresponding symlinks, i.e. ld-linux-x86-64.so.2, libc.so.6, libdl.so.2, libm.so.6 and libpthread.so.0 to point to 2.17 versions instead of 2.12 ones.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.