调试容器中的bash脚本会在主机上进行处理吗?

时间:2016-08-10 14:09:26

标签: docker

我启动一个名为pg的容器。我想在容器中调试bash脚本,所以我在容器中安装了bashdb。我开始了:

root@f8693085f270:/# /usr/share/bin/bashdb docker-entrypoint.sh postgres

我回到主人那里,然后做:

[eric@almond volume]$ docker exec -ti pg bash
root@f8693085f270:/# ps ajxw
 PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
    0     1     1     1 ?         3746 Ss       0   0:00 bash
    1  3746  3746     1 console   3746 S+       0   0:00 /bin/bash 

[eric@almond postgres]$ ps ajxw | grep docker
30613  3702  3702 30613 pts/36    3702 Sl+   1000   0:01 docker run --name pg -v /home/eric/tmp/bashdb:/bashdb -it postgres bash
 3760  8049  8049  3760 pts/19    8049 S+       0   0:00 /bin/bash /usr/share/bin/bashdb docker-entrypoint.sh postgres
 4166  8294  8294  4166 pts/9     8294 Sl+   1000   0:00 docker exec -ti pg bash

所以在容器中我看到一个TTY条目console,这是我以前从未见过的,我在主机的ps看到调试条目!

发生了什么事?

1 个答案:

答案 0 :(得分:0)

Docker将容器与主机隔离,它不会将主机与容器隔离。这意味着主机可以看到进程在容器内运行,但是从不同的名称空间中,因此pid将是不同的。

附加到控制台似乎是来自bashdb的东西。它有自动检测tty以指示输出,并且可能会被Docker隔离抛出。