こんにちは、さるまりんです。
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秒ごとに新しいログが表示されます。
コンテナは動いています
コンテナは動いています
コンテナは動いています
-f は follow の略です。
英語の 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
で少し中をのぞいてみてください。
読んでくださってありがとうございました。
それではまた!