Re:ゼロから始める文系プログラマ

未経験がプログラミングを通して人生を変える

Dockerとは?初心者向けに徹底解説


スポンサードリンク
 

f:id:ShotaNukumizu_1000:20210924113541p:plain

おはようございます。Shotaです。

2021年現在、Dockerはモダンな開発現場であれば間違いなく取り入れられている技術と言っても過言ではないでしょう。Dockerはさらに普及していくものと思われます。


😟「Dockerって何?」

🤨「Dockerという名前は聞いたことがあるけど、Dockerでできることがわからない」


このように悩んでいる人も少なくないと思います。

そこで、今回の記事では「Docker」をプログラミング初心者にもわかりやすく解説していきます。



Dockerとは

f:id:ShotaNukumizu_1000:20211027093221p:plain

Dockerは、仮想環境を構築するためのツールです。

WindowsMacなどのホストマシンの上に「コンテナ」と呼ばれる仮想環境を構築し、そのコンテナの中でアプリケーションやミドルウェア、OSなどを動かせます。これらコンテナを組み合わせて、アプリケーションを構築していきます。要は、コンテナは「あるアプリに必要な環境をOSレベルでパッケージ化してまとめた箱」です。

また、コンテナは非常に軽量なので、環境に依存せず起動や停止などの操作が素早く完了します。

あと、Dockerではアプリ開発に必要な環境を複数用意できます。


Dockerの仕組みと仮想化ソフトの違い

f:id:ShotaNukumizu_1000:20211027093121p:plain

このように、「複数の開発環境を作れる」という観点から見ると、

🤨「DockerとVirtualBoxのような仮想ソフトの違いは?

このような話になるかもしれません。両者はできることは同じに見えますが、仕組みは全然違います。

一言で言えば、コンテナはただ実行環境を隔離しているだけです。ハードウェアをエミュレートしているのではなく、それぞれのコンテナにOSをインストールしているわけでもありません。そのため仮想マシンと比較してオーバーヘッドがなく、非常に高速です。

Dockerでは、カーネルの上に「Docker Engine」が搭載され、その上でDockerコンテナが実行されます。ここで、それぞれのコンテナにはカーネルが入っておらず、ホストのカーネルを共有しているのがポイントです。いくつコンテナを実行してもカーネルはひとつなので、コンテナの数、カーネルの分だけメモリを消費してしまうことがありません。

要は、Dockerでは独立して複数の仮想環境を実行できるのです。


Dockerを導入するメリット

f:id:ShotaNukumizu_1000:20210921075852p:plain

本章では、Dockerを導入するメリットをいくつか紹介します。


環境に依存しない

前章でも触れましたが、コンテナはアプリに必要な環境をOSレベルでパッケージ化していることから環境に依存せずどこでも動かせます。

環境Aで動いていたアプリを環境Bで動かす難易度が下がるため、基盤周りで悩みのタネを解消できるのです。


インフラをコードに変換できる

f:id:ShotaNukumizu_1000:20210924094808p:plain

Dockerでは開発環境を定義書に変換して利用できるので、手順書整備という作業から開放されます。

このような手法を、Dockerでは「Infrastructure as a Code」などと呼んでおり、Dockerでも実現できます。


アプリを細かく開発できる

Dockerでは複数のコンテナを組みわせてアプリケーションを開発するのが一般的です。

言い換えれば、細かいパーツを組み合わせて一つの大きなアプリケーションを開発することで、流行りのマイクロサービスアーキテクチャを簡単に実現できます。


まとめ

今回の記事では、仮想環境を構築するツールであるDockerについて詳細に解説しました。

今回の記事を参考に、Dockerについて理解を深めていただけると幸いです。

今回の記事はこれで終了です。

【Docker公式サイト】

www.docker.com

【参考サイト】

engineer-life.dev

kitsune.blog

codezine.jp