こんにちは、まくロロです。最近インフラ周りに興味が出てきて、今後dockerとk8sを極めていきたいと思っています。
最近dockerという言葉をよく耳にするようになってきましたが、一体このdockerとは何者なのか?何ができるのか?よくわからない方も多いのではないでしょうか。
そこで、今回はざっくりとしたdockerの概念と何ができるのかを説明したいと思います。
目次
Dockerとは何者なのか
![](https://macroro.com/wp-content/uploads/2019/03/ben-sweet-456320-unsplash-1024x576.jpg)
一言でいうとオープンソースのコンテナ管理ツールです。
コンテナとは仮想化環境を作ることができる箱のようなイメージです。コンテナを用いてアプリケーションの開発や実行、移動するための仕組みを提供してるツールです。
従来のハイパーバイザー型のVMとは違いゲストOSを立ち上げることなく、ホストOS上にドッカーエンジンを立ち上げて、その一個上の階層で複数のコンテナを立ち上げるという感じです。
![](https://macroro.com/wp-content/uploads/2019/03/Screenshot-2019-03-25-18.35.35-1024x560.png)
ゲストOSを介さずにkernel→ドッカーの処理→アプリケーションの起動という流れで行われるので、起動や処理が非常に高速であったり、コンテナそれぞれでリソースを分割するのでメモリの消費も効率的に行えます。
さらに、コンテナ一個一個分割してアプリケーションを起動することが可能なので、何かアプリケーションに障害が発生した場合すぐに、その場所を特定できるなどのメリットがあります。
コンテナの環境間の移動がスムーズに行えるので、AWS→GCP→Azureなどのように柔軟にインフラ環境を変えることもできます。それでもって、コンテナ内の設定は普遍なので環境移動間によるバグなどが起らないことも特徴ですね。
何ができるのか?
![](https://macroro.com/wp-content/uploads/2019/03/ask-blackboard-356079-1024x620.jpg)
大雑把にいうとコンテナの中で独自にアプリケーションを起動できたり、サーバー環境を整えたりすることができます。
さらに、アプリケーションの開発環境をソースコードで管理することができるので容易にアプリケーション環境を再現することが可能です。
新しいエンジニアが新しく会社に入社してきた場合、あらかじめdocker hubで管理しているドッカーイメージをプルしてきて、新人エンジニアのローカルに開発環境を一瞬で構築することなど。
簡単なフローとしてはこんな感じです。
イメージ図としてはこんな感じです。
![](https://macroro.com/wp-content/uploads/2019/03/Screenshot-2019-03-25-19.10.23-1024x785.png)
dockerコンテナの構成としては、複数の使用するイメージを一つのコンテナ内にレイヤーとして独自のコンテナを作成して行きます。
![](https://macroro.com/wp-content/uploads/2019/03/Screenshot-2019-03-25-20.07.28-1024x756.png)
お菓子の袋詰と一緒ですね。好みの設定をどんどん入れていくイメージです。
さらにこんなこともできます。
開発環境、テスト環境、本番環境をそれぞれコンテナとして保存しておきGit hubと連携させ、webhookなどを用いて差分を検知したら自動的にその差分をimageとして変更、保存するなど。
まとめ
今回はドッカーの基礎的な概念やできることについて書きました。
ドッカーはkubenetesというオープンソースのコンテナオーケストレーションツールを使うと、さらに効率的にコンテナの操作をすることができます。
次の記事ではkubanetesについての基本的な概念やできることを書いていこうと思います。
この記事へのコメントはありません。