Docker

【簡単!】Dockerとは?初心者向けにわかりやすく解説【Docker入門講座①】

こんにちは、インフラエンジニアのryuです。

今回は、Dockerとは何かを初心者向けにわかりやすく解説します。Dockerはコンテナ技術を実現するためのソフトウェアです。Dockerはインフラエンジニア以外の方も知っておくべき技術です。インフラを使ったことの無い方にもわかりやすく解説します。

Dockerとは?初心者向けにわかりやすく解説

Dockerって聞いたことあるけど、よくわかんないんだよね~

Dockerはシステム開発する人なら全員知っておくべき内容です!

インフラを触ったことの無い方でも分るように解説します!

今回の記事では、Dockerの概要と最初のセットアップについて詳しく解説します。Dockerの詳しい使い方は今後の記事で随時アップしていきます。

説明の前に、なぜDockerはシステム開発する人なら全員知っておくべき内容なのでしょうか?

Dockerを使うとシステム開発が圧倒的に早くなる!?

Dockerを使うとシステム開発が効率的に行えます!なので、プログラマーの方はDockerの環境で開発をしてもらいます!

どういうこと?

なんでDockerの環境で開発?

今から、Dockerを使うメリットについて詳しく解説します。ここを読むとDockerがどのようなものなのか概要を理解することができます

まだDockerの環境でシステム開発を行っていない方も、今後は必ずDockerが取り入れられるので、ぜひ覚えておきましょう

メリットが分かりやすいようにDockerを導入する前と後で比較してみましょう。

Dockerを導入する前の開発スタイル

Dockerが導入される前はどのような環境でシステムを開発していたでしょうか?下記の会話から確認してみましょう。

システムを開発するときはどのPCでコーディングしていましたか?

えーと、自分のMacのパソコンです。

では、アプリが完成したら、サーバー(本番環境)にリリースしますよね?そのサーバーのOSは?

Linux使っています!

本番環境へリリースしたとき正常に動作する?

いや・・・

本番環境ではアプリ動かなくて修正することが多々あります・・・

このように、開発環境で動作していたアプリが本番環境にリリースされると動かなくなるということは多々あります。

なぜなら、開発環境と本番環境が違うからです。例えば、開発環境は開発者のPC(MacやWindows)を使用し、本番環境はLinuxサーバーやWindowsサーバーを使うことがあります。OSに依存する設定がある場合、別の環境に移動した際に動かなくなります。

つまり、開発環境で開発していたアプリを本番環境にリリースするためには、その環境に合わせてプログラムを修正する無駄な工数が発生してしまいます。

その無駄な工数を無くしてくれるのがDockerです!

Dockerを導入するとどうなるの?

先ほどまで、Dockerを導入していない開発スタイルを説明しました。では、Dockerを導入するとどうなるのでしょうか?

結論は、全員が同じ環境を簡単に作成できるようになるということです。

どういうこと?全く分からん!

安心してください!簡単に分かりやすく説明します。

そもそもDockerとは何なのでしょうか?

Dockerとは、コンテナ化型の仮想化技術のことです。簡単に言うと、サーバーなどの設定をコンテナーに一つにまとめる技術のことです。

具体的に言うと、プログラムのバージョンやインストールするモジュールなどを一つにまとめることです。イメージは以下のような感じです。

dockerのコンテナとは?

設定がまとまったこのコンテナを使うと環境を切り替えたときに動かなくなる不具合が無くなります。

コンテナはDocker上で動作します。そのため、開発環境から号口環境に切り替えた際に、Dockerという共通の基盤があることで、環境の違いによる不具合を無くすことができるのです。

つまり、環境に切り替えによる無駄な工数が無くなります。

ではなぜ、Dockerを使うとそのようなことができるのでしょうか?ここからは、Dockerの構成について解説していきたいと思います。構成を知るとさらに理解が深まります。

Dockerの構成とは?

Dockerを使うと、環境を切り替えが簡単ということが何となく分かったけど・・・どういうこと?

アイコン名を入力

Dockerの構成を理解するとさらに理解できます!

ここからは、Dockerの構成についての説明をしています。しかし、Dockerの構成をいきなり説明しても、よく分からないと思うので、Docker無しの場合を考えてみましょう。

Dockerをインストールしていない場合の開発環境

まず、Dockerをインストールしていない開発環境を考えてみます。例えば、pythonを使ってアプリを開発するとしましょう。

pythonのプログラムをPC上で動作させるためには、pythonをインストールする必要があります。そして、pipコマンドを使ってモジュール等をインストールして、コーティングをしていきます。

ここまでの流れを図にすると以下のようになります。

dockerが無い場合の構成

ここから、本番環境のLinuxサーバーに開発したアプリをリリースしてみましょう。どうなるでしょうか?

dockerが無い場合に配信したらどうなるのか

この図のように、開発PCと号口サーバーでは環境が全く違います。例えば、違うバージョンのpythonがインストールされてたということです。バージョンが違うことでアプリが動作しなくなるのはよくあります。

では、Dockerをインストールするとどうなるのでしょうか?先ほど説明したコンテナという技術でこれらの問題を解決することができます。

Dockerをインストールした場合の構成

Dockerをインストールした場合の構成は以下のようになります。

dockerをインストールした場合の構成

HostOS(Mac)にDockerがインストールされます。アプリやpythonなどはコンテナにまとめられ、Docker上で動作します。

号口環境にアプリをリリースする際は、コンテナ毎サーバーに配信すれば、問題なく動作させることができます。コンテナには、アプリを動作させるために必要な情報が全て入っているからです。

1dockerがある場合に配信をするとアプリは正常に動作する

Dockerの構成は理解できましたでしょうか?構成が理解できると、Dockerの概要で説明した部分も納得できると思います。

Dockerをつかってみよう!

Dockerの概要が理解できたら、Dockerのセットアップをして実際にコンテナを起動させてみましょう。

Dockerの使い方については、下記の記事で順番に解説しているので、ぜひご覧ください。

Dockerのセットアップ

Dockerのセットアップ方法を詳しく解説しています。Dockerのインストールがまだの方はご覧ください。

Dockerイメージを作成する

Dockerイメージとはコンテナの基となる部分です。DockerのコマンドなどDockerの基礎操作が学べます!

その他Dockerについての記事はこちらにまとめております。興味のある方は是非ご覧ください。

Docker入門講座一覧

Dockerとは?初心者向けに分かりやすく解説まとめ

今回の記事では、Dockerの概要を分かりやすく解説しました。Dockerは今後必ず使う技術ですので、ぜひ覚えておきましょう!

さらに詳細を動画で学習したい方はこちらの講座がオススメです。

ゼロからはじめる Dockerによるアプリケーション実行環境構築

Docker参考資料

・たった1日で基本が身に付く!Docker/Kubernetes超入門

・プログラマのためのDocker教科書

ABOUT ME
ryu
大手メーカのIT部門でインフラエンジニアやってます。 サーバ、ネットワーク、セキュリティ、クラウドについて投稿します。 AI、ARも勉強中です! youtubeでも技術ネタを発信していきます。↓のアイコンよりご覧ください!