0

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

何が起こっている?

4

1 に答える 1

0

Docker はコンテナをホストから分離しますが、ホストをコンテナから分離するわけではありません。つまり、ホストはコンテナー内で実行されているプロセスを確認できますが、名前空間が異なるため、pid は異なります。

コンソールへの接続は、bashdb からのもののようです。出力を送信する tty の自動検出があり、Docker 分離によってスローされる可能性があります。

于 2016-08-10T14:21:00.397 に答える