【初心者向け】現場で本当に使うDockerコマンドはこれだった

インフラ関連

以前はDockerを毛嫌いしていた私も、今となっては環境構築=Docker一択。
最初のうちは「これ今起動できてる? 停止しちゃっていいの??」って悩む方も多いと思います。

でも実際のところ、現場で本当に使ってきたコマンドは片手で数える程度でした。

まずはこれを押さえておけばなんとかなります。

前提:docker compose とは?

Dockerには「1つのコンテナを操作するコマンド」と「複数のコンテナをまとめて操作するコマンド」があります。

この記事で紹介するのは後者、docker compose コマンドです。
Webアプリ開発では「アプリ本体」「データベース」「キャッシュサーバー」など複数のコンテナを同時に扱うことが多く、docker compose を使うとそれらをまとめて管理できます。

docker compose up -d ── 起動する

$ docker compose up -d

コンテナをバックグラウンドで起動します。

-d は “detached(切り離された)” の略。
要するに、起動後もターミナルをそのまま使い続けられます。

-d をつけないと、黒画面がログ表示に占領されてしまうので、基本的には -d つきで覚えておきましょう。

使うタイミング: 開発を始めるとき、毎朝PCを開いたとき

docker compose down ── 停止する

$ docker compose down

起動中のコンテナを停止・削除します。といっても、データは保持されます。

エンジニアの皆さまからすれば、「削除」と聞くとうすら寒く感じるかもしれませんが、ここで削除されるのは「コンテナ(=Dockerが作った作業部屋)」です。
その作業部屋がなくなるだけで、そこに保存していたデータは別の場所にちゃんと残っています。

データベースの中身などは消えないので安心してください。

使うタイミング: 作業を終えるとき、PCをシャットダウンする前

docker compose ps ── 起動しているコンテナを確認する

$ docker compose ps

現在起動しているコンテナの一覧と状態(動いているか・止まっているか)を確認できます。

個人的には「あれ、ちゃんと起動してるっけ?」という場面にめちゃくちゃ遭遇する(up -d はバックグラウンドで起動するため)ので、初心者であればあるほど叩いているコマンドな気がします。

使うタイミング: docker compose up -d を実行した直後、とにかく動作が不安になったとき

docker compose logs -f ── ログをリアルタイムで確認する

$ docker compose logs -f --since 30s  # 直近30秒
$ docker compose logs -f --since 5m   # 直近5分
$ docker compose logs -f --since 1h   # 直近1時間

動いているコンテナのログをリアルタイムで表示します。

-f は “follow(追いかける)” の略です。
エラーが出たとき、処理がうまく動いていないとき…、まずはこのコマンドでログを確認しましょう。

ちなみに、--since オプションは必須ではないのですが、大きいプロジェクトだったりすると過去のログが一気に流れてきて「ウワーーーッ!?!?」ってなるので(経験談)、なるべく --since で絞るのがおすすめです。

終了するときは Ctrl + C を押せばOKです。コンテナは止まりません。

使うタイミング: 動作確認したいとき・エラーの原因を調べたいとき

まとめ

コマンド説明使うタイミング
docker compose up -dバックグラウンドで起動作業開始時
docker compose down停止(データは保持)作業終了時
docker compose psコンテナの状態確認コンテナ起動後・デバッグ時
docker compose logs -fログをリアルタイム確認デバッグ時

まずはこの4つ…というか、今でもほぼこれだけでなんとかなってる気がします。

現場では docker compose ではなく、古い書き方の docker-compose が使われているプロジェクトも全然あるので、コマンドが効かないときはハイフンありの書き方も試してみてください。

おまけ:現場でよく見るその他のコマンド

基本の4つに慣れてきたら、以下のコマンドも少しずつ覚えておくと便利です。

docker compose exec [サービス名] bash ── コンテナの中に入る

$ docker compose exec [サービス名] bash

例:docker compose exec hibitsuiki_app bash

起動中のコンテナの中に入る、つまりDockerが作った作業部屋の中に入れます。
「コンテナの中でファイルを確認したい」「コマンドを直接実行したい」というときに使いましょう。
出るときは exit でOKです。

シェルが bash ではなく sh しか使えないコンテナもあります。
bash でエラーが出たら sh を試してみてください。

docker compose build ── イメージをビルドする

$ docker compose build

Dockerfile を変更したときに、イメージを作り直すコマンドです。
コードの変更は自動で反映されますが、パッケージの追加など Dockerfile 自体を変えたときは、このコマンドでビルドし直す必要があります。

docker compose up -d --build と書くと、ビルドと起動を一度に実行できて便利です。

docker compose down -v ── 停止+データも削除する

$ docker compose down -v

コンテナを停止し、データ(ボリューム)も含めて完全に削除します。

-v オプションをつけると、データベースの中身など「永続化されたデータ」も一緒に消えます。
ので、「環境を最初からリセットしたい」というときには便利ですが、うっかり実行すると大事なデータが消えます。

私の場合、このコマンドはローカル環境を作り直す場合だけに留めておいてますね…。

ではまた次回!

タイトルとURLをコピーしました