【完全入門】docker?docker compose?違いと使い分け

【完全入門】 dockerとは?docker compose とは?これで解決☆
この記事は約10分で読めます。
謎のスナギツネ
謎のスナギツネ

dockerとかdocker composeって知っておるか?

エンジニア1
エンジニア1

現場で使っているよ!

コマンド打ったら動くよね!

エンジニア2
エンジニア2

とりあえず使えてるし問題ないよ〜

説明しろって言われたらわからないけど、、

PR

AIと英会話レッスン【スピークエル】

スマリッジで変わる出逢い

フリーランスエンジニアに安心保証と豊富な案件紹介を【midworks】

自宅で始めて、年収1,300万円以上が可能【IBJ】

粗利90%以上の婚活ビジネス【IBJ】

全国送料無料!IT書、ビジネス書、資格書が豊富なSEshop

dockerとは?

概要

dockerは、コンテナ仮想化技術(コンテナと呼ばれる独立した環境)を用いて、アプリケーションを隔離して実行することができます!

これにより、アプリケーションが他のアプリケーションの影響を受けることがなくなり、セキュリティが向上
またdockerコンテナ は、軽量で、起動や停止が高速、複数のdockerコンテナ を同じコンピューター上で実行することができ、従来の仮想マシンとは異なり、OSを必要としないのです。
結果として、アプリケーションの開発・テスト・デプロイを効率化することができるのです。

現在、アプリケーション開発者、システム管理者、運用者など、幅広いユーザーに使用されていますdocker を習得することで、確実にエンジニアとしてのキャリアアップにつながります。

使い勝手とメリット

起動時に環境を作るため環境を作ったり壊したりしても、使用元のPCに影響を与えづらく安全!

もし、使用元のPCでDBやJAVA等をいちいちインストールしたりアンインストールしたりを繰り返していると時間もかかるし、ゴミが残る可能性やPCに悪影響のあるデータを消したりする可能性がある。
docker で仮想環境を利用することで影響をdockerの仮想環境に閉じることができ、起動時にインストール状況を整えたりを高速に行うことができる。

昨今の開発現場では、ローカル、本番環境問わずめちゃくちゃ使われている。ま使われている。

docker compose とは?

docker composeは、dockerコンテナを定義および実行するためのツールです。
記述方法としては、YAMLdockerコンテナの定義や依存関係が記載します
このファイルを使用して、dockerコンテナを起動したり、停止したり、再起動したり、削除したりすることができます。

dockerだけだと複数のコンテナを連携させてアプリケーションを構築する場合、手動でコンテナを起動・管理するのは煩雑でエラーが発生しやすい。
そこで「docker compose」が役立ちます。

docker compose を使うと、こんなことができるよ!

  • YAMLファイルにコンテナの設定や依存関係を記述することができる
  • dockerコンテナ を定義、変更
  • 複数の dockeコンテナ をまとめて管理(起動、停止、再起動、削除)
  • 異なるコンテナ間でのネットワーク接続や環境変数の設定なども容易

まとめ
docker composeは、複数のDockerコンテナを一括管理するためのツールであり、アプリケーションの構築や実行を効率化することができます。
これにより、開発環境やテスト環境、本番環境などでのアプリケーションの再現性や一貫性を向上させることができる。

docker イメージとは?

dockerイメージとは、dockerコンテナの元となるテンプレートのようなものであり
アプリケーションを実行するために必要なすべてのファイル、環境変数、バイナリなどを含んだパッケージです。このイメージは、dockerイメージビルドのプロセスによって作成されます。

作成されたdockerイメージはdocker コンテナを作成するために使用されます
具体的には、dockerレジストリと呼ばれる中央のリポジトリに保存されます。
このイメージを使用して、dockerコンテナを作成し実行することができます。このイメージは環境に依存せず、再現性が高いため、異なる環境でのアプリケーションの実行や配布が容易になります。

まとめ
dockerイメージは、アプリケーションやサービスの実行に必要なすべてのコードと依存関係を含んだパッケージであり、dockerコンテナの元となるテンプレートです。
dockerfileによって定義され、dockerレジストリに保存されます。
これにより、環境の違いに関係なくアプリケーションを簡単に構築、実行、配布することができます。

dockerイメージの保存

dockerイメージは、AWSのECRAmazon Elastic Container Registry) に保存できます。

ECRは、dockerイメージの保存、管理、および配布のためのサービスで、dockerイメージの保存に必要なインフラを管理する必要がなく、dockerイメージの管理を簡単にすることができます。

dockerイメージビルドとは?

dockerイメージビルドは、dockerfileと呼ばれるテキストファイルにイメージの構築手順を記述し、それをもとにdockerが自動的にイメージを作成します。

dockerfileとは?

dockerfileには、ベースイメージの指定、必要なパッケージのインストール、設定ファイルの追加などが含まれています。

よく使用するファイル

  • Dockerfile
    • Docker イメージを作成するためのファイルです。
    • Docker イメージに含めるファイルやバイナリ、環境変数などを記述します。
  • docker-compose.yml
    • Docker Compose を使用して複数の Docker コンテナを管理するためのファイルです。
    • Docker Compose で管理する Docker コンテナの定義を記述します。

dockerとdocker composeの使い分け

dockerの使われ方

dockerは、一つのコンテナを作成・管理するためのツールです。
コンテナは、アプリケーションを実行するための環境をパッケージ化したものであり、それぞれのコンテナは独立して動作します。
dockerを使用すると、アプリケーションやサービスを簡単にコンテナ化することができます。
個々のコンテナは、環境や依存関係を気にせずに実行できるため、開発環境や本番環境の再現性が高くなります。

docker composeの使われ方

docker composeは、複数のコンテナを組み合わせてアプリケーション全体の環境を管理するためのツールです。
docker composeを使用すると、複数のコンテナを一括して起動・停止・管理することができます。
たとえば、Webサーバーやデータベースのコンテナを組み合わせて、開発環境やテスト環境を構築することができます。
docker composeファイルに必要な設定を記述し、一度のコマンドで複数のコンテナを操作できます

使い分けのポイント

使い分けのポイントは、プロジェクトの規模や複雑さです

単純なアプリケーションの場合

docker単体でコンテナを作成・管理するだけで十分です。
(docker composeを使っちゃだめな訳では無い)
例えば、DB一つだけ用意のケースなど

複数のコンテナを連携させて複雑なアプリケーションを構築する場合

docker composeを使用すると便利です。
例えば、DBを2つ、アプリケーションを一つを一緒に構築したりするケースなど

まとめ
dockerは個々のコンテナの作成・管理に適しており、docker composeは複数のコンテナを一括して管理する際に役立ちます。
プロジェクトの要件や目的に応じて、適切なツールを選択して利用することが大切です。

dockerのよく使うコマンド

dockerコンテナの起動コマンド

dockerfileからイメージをビルドし、それをもとにコンテナを作成・起動

dockerイメージのビルド

docker build -t {IMAGE_NAME} {PATH}

このコマンドは、指定したDockerfileからDockerイメージをビルドします。
{IMAGE_NAME}はイメージの名前を指定
{PATH}はDockerfileが存在するディレクトリのパス

dockerコンテナの起動

docker run [OPTIONS] {IMAGE_NAME}

このコマンドは、指定したイメージを基に新しいコンテナを作成し、起動します。
[OPTIONS]はオプションの設定を行う場合に使用します。

dockerコンテナの一覧表示コマンド

docker psコマンド

docker ps

このコマンドは実行中のDockerコンテナの一覧を表示します。
CONTAINER ID列に表示されている値がコンテナのIDです。

docker container lsコマンド

docker container ls

このコマンドも実行中のDockerコンテナの一覧を表示します。
CONTAINER ID列に表示されている値がコンテナのIDです。

dockerコンテナの停止コマンド

dockerコンテナの停止

docker stop {CONTAINER_ID}

このコマンドは、指定したコンテナを停止します。
{CONTAINER_ID}は停止したいコンテナのIDを指定

dockerコンテナの削除コマンド

dockerコンテナの削除

docker rm {CONTAINER_ID}

このコマンドは、指定したコンテナを削除します。
{CONTAINER_ID}は削除したいコンテナのIDを指定します。

docker composeのよく使うコマンド

docker composeの起動コマンド

docker composeの起動

docker-compose up [OPTIONS]

このコマンドは、カレントディレクトリ内のdocker-compose.ymlファイルを読み込み、定義されたサービス(コンテナのグループ)を起動します。
OPTIONSには起動時の追加のオプションを指定することができます。

docker composeの停止コマンド

docker composeの停止

docker-compose down [OPTIONS]

このコマンドは、起動中のサービスを停止し、関連するコンテナを削除します。
OPTIONSには停止時の追加のオプションを指定することができます。

docker composeの削除コマンド

docker composeの削除

docker-compose rm [OPTIONS]

このコマンドは、停止されたコンテナを削除します。
OPTIONSには削除時の追加のオプションを指定することができます。

ちなみに削除と停止の違い

停止は、コンテナを一時停止させることで、再度起動することができます。
削除は、コンテナを完全に削除してしまい、復元することができません。

停止(Stop)

dockerコンテナを実行中の状態から停止状態に変更します。
停止されたコンテナはまだ存在し、再度起動することができます。
停止中のコンテナはリソースを消費せず、一時停止した状態です。

削除(Remove)

dockerコンテナを完全に削除します。
削除されたコンテナは復元することができません。
コンテナのデータや設定も同時に削除されます。
不要なコンテナのリソースを解放することができます。

さいごに

今まで曖昧だった使い分けや役割を改めて、知っていただけたら良いなと思います!

需要の高い人気プログラミング言語&フレームワーク【将来性】
数多くの種類の言語からプログラミング初心者にもエンジニアのキャリアアップにも最適な将来性の高い人気のプログラミング言語とおすすめフレームワークを紹介!特に需要の把握はスキルアップと年収に直結です。ガチで必要な全ての選択肢の答えがここに
【make】初心者から始めるおすすめノーコードツールの開発紹介
ノーコードで簡単に自動化やChatGPTを使ったアプリ開発できるツールが登場しました!初心者向けにおすすめのmakeでアプリ開発、使い方を紹介!簡単にLINE連携もできちゃいます。Makeはバックエンド、Bubbleはフロントエンド
【React&TypeScript入門】.js .jsx .ts .tsxの違いと使い分けの話
なんとなく使っているけど、.js .jsx .ts .tsxの違いが分からない~使い分けがよくわからない~を解決しよう
超簡単フリーランスエンジニアになるには?おすすめの案件探し方
経験年数の少なさで諦めていませんか?経験が浅くてもフリーランスエンジニアになれる方法なり方と理由がここにあり。誰でもできる超簡単なおすすめの案件(仕事)の探し方解説!ベストなITエージェントの使い方はこれだ!時代を生き抜く力はフリーランスにあり
PR
PR

コメント

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