‫コンテナとは何かという定義をウェブ上で探っていくと､ コンテナを仮想マシンと比較している人をよく見かけます｡
‫確かに似ている部分もありますが､ 同じではない部分もたくさんあるんです｡
‫仮想マシンと比較するのもやめよう､ とバックアップしてほしい｡ だって､ 本当にただのプロセスなんですもの｡
‫ホストOS（ここではLinux）上で動作するプロセスです｡
‫この概念は､ ホストOS内の制限されたプロセスであり､
‫仮想マシンのようなものではありません｡
‫Mongoデータベースを立ち上げてみましょう｡
‫それをmongoと呼ぶことにしました｡ バックグラウンドで実行することになります｡
‫そして､ Mongoのイメージを使っています｡
‫わかりました｡ また､ Dockerにはdocker topというものがあり､ 特定のコンテナ内で実行されているプロセスを一覧表示することができます｡
‫そこには､ mongodというプロセスが1つあることがわかります｡
‫そのプロセスIDであるPIDを見ることができます｡ ホストからも可能です｡ これはホストOS上で動作しているプロセスなので､
‫プロセスを見るために使用するどのホストツールでもこのプロセスを見ることができます｡
‫例えば工程表を使うことができる｡ システム上に全てリストアップしていきます｡ 実際に検索してみると､ この中にmongodというのがありますね｡
‫実際には､
‫他のシステムとは異なるプロセスIDで動作していることにも気づかれることでしょう｡
‫これは､ これから説明するコンテナのセキュリティ層と､ ホスト上で実行される通常のプロセスとは少し異なるという理由によるものです｡
‫ここで､ これはホスト上のプロセスであることがはっきりとわかります｡
‫私たちがアクセスできないような仮想マシンの中に隠れているわけではありません｡
‫目の前にあるんです｡
‫このコンテナを止めると､
‫docker psができる｡ 実行されていないことがわかると思います｡
‫docker top mongoができる｡
‫コンテナが動いていないので､ 実際には何も出てきません｡
‫ps auxして､ もう一度mongoを検索しても､ そのリストには何も表示されません｡
‫実は端末の中を検索しているんです｡
‫もっと簡単な方法は､ ps
‫aux を実行してから grep を使うことです｡ grep は出力をフィルタリングするツールで､ mongo という単語を探すように指示します｡
‫実際に検索されるのは､ 先ほどmongoという単語を検索するために実行したコマンドだけなんです｡
‫ということを記載しています｡ このすぐ下に別のコマンドが表示されるはずですが､
‫これは本当にプロセスが実行されているのであれば､
‫別の出力です｡ コンテナはまだそこにありますが､ バックグラウンドで実行されていないだけで､ 停止したプロセスのようなものですから､
‫docker start mongoで再び起動できます｡
‫もう一度docker psをすれば､ また稼働するようになります｡
‫もう一度 docker top mongo を実行すると､ コンテナ内で再び1つのプロセスが実行されていることが確認できます｡
‫新しくスタートしたところです｡
‫ここで見られるように､ まだ6秒しか経っていません｡
‫ps aux grep mongo を実行すると､ 実際に mongod プロセスが表示されていることがわかります｡