Dockerのlogsってなに?コンテナのログを見てみよう

こんにちは、さるまりんです。

Dockerでコンテナを動かしていると、

「コンテナは動いているみたいだけど、中で何が起きているんだろう?」

と思うことがあります。

画面に何も表示されていないと、

ちゃんと動いているのか、

それとも何か問題が起きているのか、

「あれ?どうなっているんだ。わからない〜」となります。

そんなときに使えるのが、

docker logs

です。

今回はMacで小さなコンテナを動かして、docker logs でログを見てみます。


Docker Desktopを起動しておきます

今回は、MacにDocker Desktopがインストールされている前提で進めます。

まず、Docker Desktopを起動しておきます。

ターミナルを開いて、次のコマンドを実行してみましょう。

docker version

Dockerの情報が表示されたら、準備はできています。

Docker Desktopが起動していない場合は、サーバーに接続できないという内容のメッセージが表示されることがあります。

そのときは、Docker Desktopを起動してから、もう一度試してみてください。


ログを出すコンテナを動かしてみよう

まずは、数秒ごとにメッセージを出すコンテナを動かしてみます。

次のコマンドを実行します。

docker run --name log-sample -d alpine sh -c 'while true; do echo "コンテナは動いています"; sleep 3; done'

少し長いですね。

今回は、細かいところを全部覚えなくても大丈夫です。

このコマンドでは、log-sample という名前のコンテナを作り、

コンテナは動いています

というメッセージを3秒ごとに出しています。

-d は、コンテナをバックグラウンドで動かすための指定です。

初めて実行したときは、必要なイメージのダウンロードが行われることがあります。


コンテナが動いているか確認してみよう

次のコマンドで、動いているコンテナを確認できます。

docker ps

一覧の中に、

log-sample

があれば、先ほどのコンテナが動いています。

でも、コンテナはバックグラウンドで動いているので、ターミナルにはメッセージが表示されていません。

そこで、ログを見てみます。


docker logsを使ってみよう

次のコマンドを実行します。

docker logs log-sample

すると、このようなログが表示されます。

コンテナは動いています
コンテナは動いています
コンテナは動いています

コンテナがこれまでに出力したメッセージを見ることができました。

基本の形は、

docker logs コンテナ名

です。

今回はコンテナの名前が log-sample なので、

docker logs log-sample

となります。


新しいログも続けて見てみよう

先ほどの docker logs では、コマンドを実行した時点までのログが表示されました。

新しいログも続けて見たいときは、-f を付けます。

docker logs -f log-sample

実行すると、3秒ごとに新しいログが表示されます。

コンテナは動いています
コンテナは動いています
コンテナは動いています

-ffollow の略です。

英語の follow には「ついていく」という意味があります。

新しく出てくるログについていくようなイメージですね。

ログを見るのを終わりたいときは、

Control + C

を押します。

Macのキーボードでは、Controlキーを押しながらCキーを押します。

これでログの表示は終わります。

コンテナそのものは、まだバックグラウンドで動いています。


最後の数行だけ見ることもできます

ログがたくさんあると、最初から全部表示するのは大変です。

そんなときは、--tail を使って、最後の数行だけを見ることができます。

例えば、最後の5行を見るなら、

docker logs --tail 5 log-sample

です。

ログが長くなっているときは便利ですね。

-f と一緒に使うこともできます。

docker logs --tail 5 -f log-sample

この場合は、まず最後の5行が表示され、そのあとに出てくる新しいログも続けて表示されます。


ログから分かること

今回は、

コンテナは動いています

という単純なメッセージを表示しました。

実際のアプリケーションでは、ログにいろいろな情報が出力されます。

例えば、

サーバーを起動しました
データベースに接続できませんでした
ファイルが見つかりません

といった情報です。

コンテナが思ったように動かないとき、ログを見ると原因につながる手がかりが見つかることがあります。

また、問題が起きていないときでも、

「ちゃんと起動したかな?」

「処理は進んでいるかな?」

という確認に使えます。

ログは、エラーが起きたときだけ見るものではないんですね。


試したコンテナを止めよう

今回はログを確認するために、メッセージを出し続けるコンテナを動かしました。

試し終わったら、次のコマンドでコンテナを止めます。

docker stop log-sample

止めたコンテナが必要なければ、削除できます。

docker rm log-sample

これで、今回作ったコンテナの片付けもできました。


今回のまとめ

今回は、docker logs を使ってコンテナのログを見てみました。

基本の形は、

docker logs コンテナ名

です。

新しいログを続けて見るときは、

docker logs -f コンテナ名

を使います。

最後の数行だけ見たいときは、

docker logs --tail 5 コンテナ名

のように指定できます。

コンテナを動かしたけれど、

「中で何が起きているか分からない」

と思ったら、まずはログを見てみるとよさそうです。

ログには、コンテナやアプリケーションの状態を知るための手がかりが入っています。

Dockerで何かを動かしたら、

docker logs

で少し中をのぞいてみてください。

読んでくださってありがとうございました。

それではまた!