p8952 / bocker

Docker implemented in around 100 lines of bash
https://www.p8952.info/
GNU General Public License v3.0
11.26k stars 715 forks source link

bocker exec fails #15

Closed basdp closed 9 years ago

basdp commented 9 years ago

Bocker exec fails always, it just outputs a long list of increasing integers. Am I doing something wrong, or is this a bug? I can't find any documentation about exec. All the other commands are working.

p8952 commented 9 years ago

Hey @basdp

This is a bug, something isn't working quite right with bocker exec. I thought it might be fixed with 11129aecc0feef3a125b90f0dbcdb8987a33eb94 but it's still not quite right.

basdp commented 9 years ago

What is still not right?

p8952 commented 9 years ago

Sorry, I mean I thought 11129aecc0feef3a125b90f0dbcdb8987a33eb94 would also fix the exec issues, but it didn't. Exec still isn't working once the original process dies.

p8952 commented 9 years ago

Ok so there are two issues here.

Start a container:

    bocker run img_42078 "while :; do echo 'foo'; sleep 5; done"

Try and exec a command with multiple words = FAILS:

    bocker exec ps_42201 ps aux
    chroot: failed to run command ‘ps aux’: No such file or directory`

Try and exec a command with one word = WORKS:

    bocker exec ps_42201 bash
    ps aux
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.2  11116  1392 ?        S+   18:31   0:00 /bin/sh -c /bin/mount -t proc proc /proc && while :; do echo 'foo'; sleep 5; done
    root         8  0.0  0.1   5884   612 ?        S+   18:31   0:00 sleep 5
    root         9  0.0  0.3  13344  1952 ?        S    18:31   0:00 bash
    root        22  0.0  0.2  21364  1376 ?        R+   18:31   0:00 ps aux

Ctrl-C the bocker run command and then try to re-enter it = FAILS:

    bocker exec ps_42201 bash
    nsenter: failed to parse pid: 'PID
    1
    2
    3
    ...
    24105
    24106
    24107

So what needs doing here is:

  1. Correctly quote and pass arguments into the container when exec'ing.
  2. Throw an error if the container is not running.
p8952 commented 9 years ago

I'm going to keep tracking the spewing out numbers issue here and the multiple words one at #20

p8952 commented 9 years ago

Should be resolved by 791122603637d1c73b5a88fb28796d1311b5e20b