Dockerとは

こんにちは、まくロロです。最近インフラ周りに興味が出てきて、今後dockerとk8sを極めていきたいと思っています。

最近dockerという言葉をよく耳にするようになってきましたが、一体このdockerとは何者なのか?何ができるのか?よくわからない方も多いのではないでしょうか。

そこで、今回はざっくりとしたdockerの概念と何ができるのかを説明したいと思います。

Dockerとは何者なのか

一言でいうとオープンソースのコンテナ管理ツールです。

コンテナとは仮想化環境を作ることができる箱のようなイメージです。コンテナを用いてアプリケーションの開発や実行、移動するための仕組みを提供してるツールです。

従来のハイパーバイザー型のVMとは違いゲストOSを立ち上げることなく、ホストOS上にドッカーエンジンを立ち上げて、その一個上の階層で複数のコンテナを立ち上げるという感じです。

ゲストOSを介さずにkernel→ドッカーの処理→アプリケーションの起動という流れで行われるので、起動や処理が非常に高速であったり、コンテナそれぞれでリソースを分割するのでメモリの消費も効率的に行えます。

さらに、コンテナ一個一個分割してアプリケーションを起動することが可能なので、何かアプリケーションに障害が発生した場合すぐに、その場所を特定できるなどのメリットがあります

コンテナの環境間の移動がスムーズに行えるので、AWS→GCP→Azureなどのように柔軟にインフラ環境を変えることもできます。それでもって、コンテナ内の設定は普遍なので環境移動間によるバグなどが起らないことも特徴ですね。

何ができるのか?

大雑把にいうとコンテナの中で独自にアプリケーションを起動できたり、サーバー環境を整えたりすることができます。

さらに、アプリケーションの開発環境をソースコードで管理することができるので容易にアプリケーション環境を再現することが可能です。

新しいエンジニアが新しく会社に入社してきた場合、あらかじめdocker hubで管理しているドッカーイメージをプルしてきて、新人エンジニアのローカルに開発環境を一瞬で構築することなど

簡単なフローとしてはこんな感じです。

  • アプリケーションの実行環境をイメージとして保存
  • そのイメージをdocker hubに置いておく
  • docker hubからイメージをpull
  • イメージからコンテナを起動
  • 開発環境が即時に構築される(再現される)
  • 「開発環境を変更したければ」イメージに変更をcommitする
  • docker pushでdocker hubにイメージを保存
  • イメージ図としてはこんな感じです。

    dockerコンテナの構成としては、複数の使用するイメージを一つのコンテナ内にレイヤーとして独自のコンテナを作成して行きます。

    お菓子の袋詰と一緒ですね。好みの設定をどんどん入れていくイメージです。

    さらにこんなこともできます。

    開発環境、テスト環境、本番環境をそれぞれコンテナとして保存しておきGit hubと連携させ、webhookなどを用いて差分を検知したら自動的にその差分をimageとして変更、保存するなど。

    まとめ

    今回はドッカーの基礎的な概念やできることについて書きました。

    ドッカーはkubenetesというオープンソースのコンテナオーケストレーションツールを使うと、さらに効率的にコンテナの操作をすることができます。

    次の記事ではkubanetesについての基本的な概念やできることを書いていこうと思います。

    railsのincludesメソッドで関連しているデータを取得する前のページ

    kubernetes(k8s)とは次のページ

    関連記事

    1. プログラミング

      railsでのカラム操作

      こんにちはまくロロです。今回はrailsでカラムの追加、削除、などの…

    2. プログラミング

      Gitとは?Gitの概念を理解しよう

      こんにちは、まくロロです。今回は、Gitの概念を説明していき…

    3. プログラミング

      jQueryの基本を学ぼう

      こんにちは、まくロロです。アニメーションを実装する際によく使…

    4. プログラミング

      RailsからGolangを習得する際の壁

      こんにちはまくロロです。今回はRailsからGolangを習得する際…

    5. プログラミング

      railsにreactを導入してみよう

      最近、自分で作っているポートフォリオがあるのですが、フロントをオシャ…

    6. プログラミング

      kubernetes(k8s)とは

      こんにちは、まくロロです。先日とある企業さんのk8sハンズオンに参加…

    コメント

    1. この記事へのコメントはありません。

    1. この記事へのトラックバックはありません。

    最近の記事

    PAGE TOP