How to debug dockerized self-detaching program?

I am writing Docker images for maintainers of packages for Debian-like distributions. These images are derived from the official images of the respective Debian-like distributions by adding packages required for maintainership and are started with a few useful mounted volumes, so that various configuration items are taken from user’s environment instead of being held in the container.

When I start a shell off that image and execute a apt-src build to prepare a package, operation starts normally but the connection between the container and the tty drops inexplicably. Examining the state of the container with docker ps -a shows that it Exited (0). This is very strange, since it means that something causes the shell to exit while its subcommand runs.

  • How to achieve build isolation and caching simultaneously?
  • apt-get install -f does not resolve dependencies
  • /bin/sh: 1: apk: not found while creating docker image
  • How to install docker without cgroup
  • Difference between nodejs v0.12 and v5.x distributions
  • Installing Pillow requirements on debian Jessie
  • Which steps can help me to debug this odd behaviour, figure out what is going on here, and eventually fix it?

    Container run command

    This is how I start the container:

    docker run\
        --volume "${maintainer_pkgdir}:${maintainer_docker_pkgdir}"\
        --volume "${maintainer_srcdir}:${maintainer_docker_srcdir}"\
        --volume "${maintainer_confdir}:${maintainer_docker_confdir}"\

    Session transcript

    The session consists of two commands apt-src install bmake and apt-src build bmake:

    % apt-src install bmake
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    Need to get 544 kB of source archives.
    Get:1 unstable/main bmake 20140620-3 (dsc) [1785 B]
    Get:2 unstable/main bmake 20140620-3 (tar) [509 kB]
    Get:3 unstable/main bmake 20140620-3 (diff) [33.0 kB]
    Fetched 544 kB in 0s (681 kB/s)
    gpgv: Signature made Tue Sep 16 20:22:02 2014 UTC using RSA key ID 1A2D268D
    gpgv: Can't check signature: public key not found
    dpkg-source: warning: failed to verify signature on ./bmake_20140620-3.dsc
    dpkg-source: info: extracting bmake in bmake-20140620
    dpkg-source: info: unpacking bmake_20140620.orig.tar.gz
    dpkg-source: info: unpacking bmake_20140620-3.debian.tar.xz
    dpkg-source: info: applying 100_makefile.boot.diff
    dpkg-source: info: applying 140_multiarch.diff
    dpkg-source: info: applying 160_manpage.diff
    dpkg-source: info: applying 180_bmake_path_max.diff
    % apt-src build bmake
    I: Building in /home/anvil/bmake-20140620 ..
    dpkg-buildpackage: source package bmake
    dpkg-buildpackage: source version 20140620-3
    dpkg-buildpackage: source changed by Andrew Shadura <>
    dpkg-buildpackage: host architecture amd64
     dpkg-source --before-build bmake-20140620
     fakeroot debian/rules clean
    dh clean --with=autoreconf
       debian/rules override_dh_auto_clean
    make[1]: Entering directory `/home/anvil/bmake-20140620'
    /usr/bin/make -f Makefile.boot clean
    make[2]: Entering directory `/home/anvil/bmake-20140620'
    rm -f arch.o buf.o compat.o cond.o dir.o for.o hash.o job.o main.o make.o make_malloc.o parse.o str.o strlist.o suff.o targ.o trace.o var.o util.o meta.o strlcpy.o lst.lib/lstAppend.o lst.lib/lstAtEnd.o lst.lib/lstAtFront.o lst.lib/lstClose.o lst.lib/lstConcat.o lst.lib/lstDatum.o lst.lib/lstDeQueue.o lst.lib/lstDestroy.o lst.lib/lstDupl.o lst.lib/lstEnQueue.o lst.lib/lstFind.o lst.lib/lstFindFrom.o lst.lib/lstFirst.o lst.lib/lstForEach.o lst.lib/lstForEachFrom.o lst.lib/lstInit.o lst.lib/lstInsert.o lst.lib/lstIsAtEnd.o lst.lib/lstIsEmpty.o lst.lib/lstLast.o lst.lib/lstMember.o lst.lib/lstNext.o lst.lib/lstOpen.o lst.lib/lstRemove.o lst.lib/lstReplace.o lst.lib/lstSucc.o lst.lib/lstPrev.o  bmake
    make[2]: Leaving directory `/home/anvil/bmake-20140620'
    make[1]: Leaving directory `/home/anvil/bmake-20140620'
     debian/rules build

  • Node-inspector in docker does not load sources
  • “Unable to locate package build-essential” while Docker build on Debian Jessie
  • Docker and XDebug not reading breakpoints VSCode
  • Using remote byebug instance with docker-compose
  • Bash script to setup Docker fails, but individual commands work
  • Debug django app running inside docker image, using pycharm debugger
  • One Solution collect form web for “How to debug dockerized self-detaching program?”

    Attaching a program to a tty seems to be a not completely reliable operation, meaning that it only works under the assumption that the program uses the tty reasonably.

    The program su is notorious for abusing the tty is connected to, so rather than troubleshooting the issue it is easier to avoid using su or any other program abusing the tty it is connected to.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.