2016-08-10 5 views
0

名前がpgのコンテナを起動します。コンテナにbashスクリプトをデバッグしたいので、コンテナにbashdbをインストールしました。私はそれを開始しました:コンテナ内のbashスクリプトをデバッグすると、ホスト上でプロセスが生成されますか?

[email protected]:/# /usr/share/bin/bashdb docker-entrypoint.sh postgres 

私は戻ってホストに移動して、実行します。

[[email protected] volume]$ docker exec -ti pg bash 
[email protected]:/# 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 

[[email protected] 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のデバッグエントリ!

何が起こっていますか?

+0

"docker top [CONTAINER]"コマンドについてはhttps://docs.docker.com/engine/reference/commandline/top/を参照してください。このコマンドは、ホスト上のコンテナの実行中のプロセスを表示します。あなたはそれを使用してコンテナのプロセスをより簡単にすることができます –

答えて

0

Dockerは、コンテナをホストから隔離しますが、コンテナからホストを分離しません。つまり、ホストは異なる名前空間からコンテナ内で実行されるプロセスを見ることができ、pidは異なります。

コンソールへの接続は、bashdbのものと思われます。これは出力を直接出力するためのttyの自動検出を備えており、Dockerの分離によって放棄される可能性があります。

関連する問題