【初心者必見】Dockerとは?Dockerについて分かりやすいまとめ
みなさんこんにちは!
カミ@god48_です。
みなさんDockerの知識はありますか?
この記事はDockerについて聞いたことはあるけど、いまいちDockerについてよく分かってない方や、
Docker初心者の方へなどDockerについて全く知識がない方へDockerの紹介です。
この記事でわかること
- Dockerとは
- Dockerでできること
- Dockerの流れ
- Dockerfileとは
- Dockerイメージとは
- Dockerコンテナとは
- 複数のDockerコンテナを定義するdocker-composeとは?
- docker-composeとDockerfileの違い
- Dockerfileをわかりやすく説明
docker-compose
をわかりやすく説明- Dockerにできること
- Dockerを使う理由
- Dockerに詰まった時
この記事を最後まで読めばDockerについての理解が深まりますので、最後まで読んでDockerについてマスターしましょう。
Dockerとは
DockerとはLinuxのコンテナ技術を使ったもので、
コンテナはホストマシンのカーネルを利用して、プロセスやユーザなどを隔離することで、
別のマシンが動いているかのように動かすことができます。
なので、軽量で高速に起動や停止などをすること可能です。
Dockerとは?端的に答えると
コンテナと呼ばれる仮想化環境を使用した、
アプリケーション実行環境を作成できるシステムのことです。
Dockerでできること
- 自身のPCで使用したいアプリケーションのインストールなど環境構築をする必要がなくなる
- 仮想空間にインストールが自動化できるため、インストールと設定作業が正確かつ時短ができる
- 設定方法の共有ができる
ここまで読んでもよく分からないと思うのでDockerの流れや使い方を見ていきましょう
スポンサードサーチ
Dockerの流れ
- Dockerfileを作成
- Dockerイメージを作成(docker image build でDockerfileを元に作成)
- コンテナの実行
Dockerfileとは
DockerfileとはDockerイメージの作成するための手順を書くファイルのことです。
スポンサードサーチ
Dockerイメージとは
Dockerイメージとは、アプリケーションを作動させるために必要なファイルなどを含む、イミュータブルなファイルのことを指します。
イミュータブルとは?
イミュータブルとは作成後にその状態を変えることのできないオブジェクトのことです。
Dockerイメージでのイミュータブルとは、ソースコードなどを指します。
アプリケーション実行に必要な変数やコマンドなどです。
Dockerイメージを用いてコンテナを動作させます。
DockerfileをビルドすることでDockerイメージを作成します。
Dockerコンテナとは
コンテナとはアプリケーションの動作環境を仮想構築する技術の一つです。
PCの中に仮想環境を作り動かす技術です。
実行するホストとの依存がなくコンテナのみで環境が完結することができます。
とは言ってもよく分からないと思うので、例を上げます。
OSの例
- MacOSでWindowsを起動させる
- WindowsOSでMacを起動させる
PHP環境の例
- PHPコンテナ
- MySQLコンテナ(DB)
- Apacheコンテナ(WEBサーバー)
ホストにXAMPPをインストールして、MySQLやApacheはもちろんPHPをインストールしていなくても、動かすことができます。
スポンサードサーチ
複数のDockerコンテナを定義するdocker-composeとは?
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に詰まった時
プログラミングを始めたい方や、独学で進めてなかなか進まないなど、プログラミングは悩みが付き物です。
正直、プログラミングは実務的に行わないと成長はしません。
もし、プログラミングをまだ始めていない方や、今後の報告で悩んでいる方は無料相談を行っているので、是非一度お問合せください。
悩んでもしょうがないので、無料相談後に選択肢を増やしたり、今後の方向性を定めることをおすすめします。