dockerとかdocker composeって知っておるか?
現場で使っているよ!
コマンド打ったら動くよね!
とりあえず使えてるし問題ないよ〜
説明しろって言われたらわからないけど、、
dockerとは?
概要
dockerは、コンテナ仮想化技術(コンテナと呼ばれる独立した環境)を用いて、アプリケーションを隔離して実行することができます!
これにより、アプリケーションが他のアプリケーションの影響を受けることがなくなり、セキュリティが向上
またdockerコンテナ は、軽量で、起動や停止が高速、複数のdockerコンテナ を同じコンピューター上で実行することができ、従来の仮想マシンとは異なり、OSを必要としないのです。
結果として、アプリケーションの開発・テスト・デプロイを効率化することができるのです。
現在、アプリケーション開発者、システム管理者、運用者など、幅広いユーザーに使用されています。docker を習得することで、確実にエンジニアとしてのキャリアアップにつながります。
使い勝手とメリット
起動時に環境を作るため環境を作ったり壊したりしても、使用元のPCに影響を与えづらく安全!
もし、使用元のPCでDBやJAVA等をいちいちインストールしたりアンインストールしたりを繰り返していると時間もかかるし、ゴミが残る可能性やPCに悪影響のあるデータを消したりする可能性がある。
docker で仮想環境を利用することで影響をdockerの仮想環境に閉じることができ、起動時にインストール状況を整えたりを高速に行うことができる。
昨今の開発現場では、ローカル、本番環境問わずめちゃくちゃ使われている。ま使われている。
docker compose とは?
docker composeは、dockerコンテナを定義および実行するためのツールです。
記述方法としては、YAML でdockerコンテナの定義や依存関係が記載します。
このファイルを使用して、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のECR(Amazon 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コンテナを完全に削除します。
削除されたコンテナは復元することができません。
コンテナのデータや設定も同時に削除されます。
不要なコンテナのリソースを解放することができます。
さいごに
今まで曖昧だった使い分けや役割を改めて、知っていただけたら良いなと思います!
コメント