5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

業務で「docker-compose upで立ち上げて」とか言っていますが本当のところあまり理解できていません…。

バックエンドの方が用意してくださった開発環境がDockerを利用してできているので言われるがままやってきましたが、そろそろ本当に恥ずかしいな…と思ったので基礎ぐらいは理解しておきたいと思います。

Dockerってなに?

Docker社によると「コンテナを使ってアプリケーションを構築、共有、実行する」と説明があります。
アプリケーションに必要なものをパッケージにして誰でも同じ環境を構築できるイメージでしょうか。

仮想化について

コンテナ技術も仮想化技術の一種です。
仮想化についてはいろいろ記事を読みましたが1台の物理サーバー上に用途などに応じて分割や統合する技術。

仮想化が普及していない時代はウェブサーバー、メールサーバー、ファイルサーバーなど用途ごとにサーバーが必要になって増え、それに伴って費用や管理が大変になる状態だったのが1つのサーバー上で同じことが可能になったのが仮想化の技術だそうです。

ニフクラさんの記事がわかりやすいと思いました。

比較に出てくる仮装マシンとコンテナについて

仮装マシン(以後Vertual Machine:略VM)はPCの中にもう一台PCがあるイメージが近いでしょうか…。
Macの中でVMによってWindowsを動かすということをした記憶があります。
VMはOSやアプリケーション、それを動かすのに必要なライブラリなどが含まれるものです。

対してコンテナはOSを共有し、その上にアプリケーションを実行する環境があるのでVMとことなりOSやアプリケーションを実行するためのライブラリが共通なためVMを使うよりも軽量なのが特徴です。

image.png
引用元:コンテナを使ってアプリケーションを構築、共有、実行する

どうやって使うの?

Dockerfileを使用してコンテナイメージを作成します。
コンテナイメージは、コンテナを作成するための指示書で、Dockerfileにはコンテナイメージを作成するためのスクリプトが記述されたファイルです。

docker buildコマンドを実行すると処理が実行されます。

コンテナを起動するにはdocker run upを実行します。

Docker Composeについて

複数のコンテナを起動する場合に使われるComposeというものがあります。
その場合docker compose upのコマンドを実行することで全体を起動し、実行します。
設定はdocker-compose.ymlに定義するそうです。

docker run upを実行して一つずつ立ち上げることも可能だけど、コンテナに依存関係(起動の順番)があった場合にymlに立ち上げの順番や設定を記述できるので複数コンテナの場合はComposeを利用するのが良さそうです。

エラーになったときのデバッグコマンド

もしこれからDockerを使うことになって、何かわからないけど環境が立ち上がってないぞ…ってなったときに実行するコマンドです。

docker ps

コマンドを実行すると下記のような表示がターミナルに表示されます。

image.png
引用: https://matsuand.github.io/docs.docker.jp.onthefly/engine/reference/commandline/ps/

もしコンテナが立ち上がっていない場合は「STATUS」の項目にEXITと表記されるはずです。
となればerrorの詳細を確認するステップに移ります。

optionも指定することが可能なので利用する場合は確認してください。

docker logs

コンテナを立ち上げた時から現在のログが出ます。
開発中にエラーが発生して画面が表示されなくなった場合はlogsにエラー内容が表示されるはずです。

docker psと同様にoptionが設定できるので適切なoptionを付与してください。
開発中でエラーがでたならずっとログを出し続けるdocker logs -fなんかが良いかもしれません。

まとめ

理解が間違っていたらぜひコメントをいただけると大変嬉しいです!
今後自分で環境を立てることは業務ではないかもしれませんが、自分が何をしているのかを理解して問題が発生した時に修正カ所がわかることで業務効率は上がると思っています。

Dockerに限らず自分が業務で扱っているものに関してはわかりやすく人に説明できるエンジニアであり続けたいなと思います。

5
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?