プログラミング

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. プログラミング

      これから伸びる言語Golangを習得しよう。

      こんにちは、まくロロです。私は現在、主にrailsを使用した…

    2. プログラミング

      Goでのクロージャ

      久しぶりの更新です。最近は就活関係で色々と忙しくブログの更新ができて…

    3. プログラミング

      自力でコードが書けるようになる思考

      こんにちはマクロロです。今回は自力でコードがかけるようになる…

    4. プログラミング

      GCPの基本概要

      今回はGCP(Google cloud platform)について基…

    5. プログラミング

      jQueryの基本を学ぼう

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

    6. プログラミング

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

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

    コメント

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

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

    最近の記事

    PAGE TOP