【初心者必見】Dockerとは?Dockerについて分かりやすいまとめ

2024年7月18日Docker

docker
ミニマリスト_カミ

みなさんこんにちは!
カミ@god48_です。

みなさんDockerの知識はありますか?
この記事はDockerについて聞いたことはあるけど、いまいちDockerについてよく分かってない方や、
Docker初心者の方へなどDockerについて全く知識がない方へDockerの紹介です。

この記事でわかること

この記事を最後まで読めばDockerについての理解が深まりますので、最後まで読んでDockerについてマスターしましょう。

Dockerとは

DockerとはLinuxのコンテナ技術を使ったもので、
コンテナはホストマシンのカーネルを利用して、プロセスやユーザなどを隔離することで、
別のマシンが動いているかのように動かすことができます。
なので、軽量で高速に起動や停止などをすること可能です。

icon

Dockerとは?端的に答えると

コンテナと呼ばれる仮想化環境を使用した、
アプリケーション実行環境を作成できるシステムのことです

Dockerでできること

  • 自身のPCで使用したいアプリケーションのインストールなど環境構築をする必要がなくなる
  • 仮想空間にインストールが自動化できるため、インストールと設定作業が正確かつ時短ができる
  • 設定方法の共有ができる

ここまで読んでもよく分からないと思うのでDockerの流れや使い方を見ていきましょう

スポンサードサーチ

Dockerの流れ

  1. Dockerfileを作成
  2. Dockerイメージを作成(docker image build でDockerfileを元に作成)
  3. コンテナの実行

Dockerfileとは

DockerfileとはDockerイメージの作成するための手順を書くファイルのことです。

スポンサードサーチ

Dockerイメージとは

Dockerイメージとは、アプリケーションを作動させるために必要なファイルなどを含む、イミュータブルなファイルのことを指します。

イミュータブルとは?

イミュータブルとは作成後にその状態を変えることのできないオブジェクトのことです。

icon

Dockerイメージでのイミュータブルとは、ソースコードなどを指します。

アプリケーション実行に必要な変数やコマンドなどです。
Dockerイメージを用いてコンテナを動作させます。
DockerfileをビルドすることでDockerイメージを作成します。

Dockerコンテナとは

コンテナとはアプリケーションの動作環境を仮想構築する技術の一つです。
PCの中に仮想環境を作り動かす技術です。
実行するホストとの依存がなくコンテナのみで環境が完結することができます。

とは言ってもよく分からないと思うので、例を上げます。

OSの例

  • MacOSでWindowsを起動させる
  • WindowsOSでMacを起動させる

PHP環境の例

  • PHPコンテナ
  • MySQLコンテナ(DB)
  • Apacheコンテナ(WEBサーバー)
icon

ホストにXAMPPをインストールして、MySQLやApacheはもちろんPHPをインストールしていなくても、動かすことができます。

スポンサードサーチ

複数のDockerコンテナを定義するdocker-composeとは?

icon

docker-composeとはDockerコンテナの連携です。

複数のDockerコンテナ同士の連携することでアプリケーション同士の連携をすることができます。
ターミナルで、以下コマンドを打つことでDockerコンテナの連携・依存を管理することができます。

docker-compose

Dockerの作成やコンテナ起動時の設定などをdocker-compose.ymlファイルに記述することで、docker-composeコマンドでまとめて操作できるようになります。

※docker-composeについては別途記事を書きますね

docker-composeとDockerfileの違い

ミニマリスト_カミ

docker-composeとDockerfileの違いを説明します。

Dockerfileをわかりやすく説明

Dockerfileに記載した内容を元にDockerイメージを作成を行います。
Dockerコンテナの環境を定義するためのテキストファイルです。

これができると(Dockerfile を書けるようになると)自分の好きなようにカスタマイズした Dockerイメージ をコマンド1行で作成できるようになります。

  • Dockerfile
    これができると(Dockerfile を書けるようになると)自分の好きなようにカスタマイズした Dockerイメージをコマンド1行で作成できるようになります。
  • docker-compose
    これができると(コンテナ管理を docker-compose による管理で行うと)複数のコンテナで構成されるアプリケーションについて、Dockerイメージ のビルドや各コンテナの起動・停止、ネットワーク接続をコマンド1行で実行できるようになります。

docker-composeをわかりやすく説明

docker-compose.yamlは、複数のDockerコンテナを一括で管理・起動するための設定ファイルです。
アプリケーションの各サービス(Webサーバー、データベース、キャッシュなど)を一つのコマンドでまとめて起動・停止することができます。

これができると(コンテナ管理を docker-compose による管理で行うと)複数のコンテナで構成されるアプリケーションについて、Dockerイメージのビルドや各コンテナの起動・停止、ネットワーク接続をコマンド1行で実行できるようになります。

Dockerにできること

Dockerにできることとコンテナでも軽く触れましたが、例を出して説明していきます。

  • 複数のサーバーを使うこと使うことができる
  • 設定ファイル等をチーム内で共有することができる
  • インストール作業の正確・時短ができる
  • DockerイメージでDockerを起動することができる

上記をまとめて説明していきます。

Dockerにできることは、
PHPでWebサービスを作るには、以下の環境って開発しようと決めるとします。

Apache + PHP+ MySQL

そうすると、各開発者のPCに上記の環境をインストールして環境を構築しないといけません。
Dockerを使うと、Apache、PHP、 MySQL、それぞれを単なるApacheコンテナ、PHPコンテナ、 MySQLコンテナといった各コンテナという単位で起動・停止すれば実行環境の構築することができます。

コンテナのインストールを実行する環境構築は簡単に行うことができ、設定等はDockerのシステム内での設定なので、OSに依存することがないので環境構築ができる点も魅力です。

Dockerを使われる理由

Dockerは、チームなど複数の共同作業の環境を統一することで、開発チームとしてのシステム環境などが発生しないようにするするためです。

Dockerを使う理由

  • コンテナで管理(PHP, mysql, Node, ubuntuなど)できる
  • コンテナにアプリケーションと実行環境を管理することで、OSに依存しない環境構築する事ができる

Dockerに詰まった時

プログラミングを始めたい方や、独学で進めてなかなか進まないなど、プログラミングは悩みが付き物です。
正直、プログラミングは実務的に行わないと成長はしません。
もし、プログラミングをまだ始めていない方や、今後の報告で悩んでいる方は無料相談を行っているので、是非一度お問合せください。
悩んでもしょうがないので、無料相談後に選択肢を増やしたり、今後の方向性を定めることをおすすめします。

DockerDocker

Posted by kami