LoginSignup
0
0

More than 3 years have passed since last update.

Dockerコンテナとは何か改めて考える

Posted at

Dockerコンテナについて少し詳しく解説をします。

対象

目的 (Objective)

以下の問題の改善を目的としています。

  • アプリケーションの実行環境が変わると、確実な実行が保証できない
  • 環境構築に時間がかかる

戦略 (What)

以下の戦略をとっています。

  • 複数システムが同居しても競合の問題を起こさない
  • 各システムで独立した実行環境を構築する

戦術 (How)

仮想化によって、上記の戦略を実現しています。

特徴:

  • アプリケーションとOS・ライブラリ・Tool等をワンパッケージで提供する
  • 他の仮想化技術より早い起動を実現する
    • カーネルをホストPCと共有することで、コンテナ実行の度にカーネルを読み込まずに済む
      理由:
      ディストリビューション(CentOS、Ubuntu等)が異なってもカーネルは共通である(Linuxとは本来、カーネル部分だけを指す)。
      そのため、Linux上で動かすのであれば、カーネルをホストPCと共用しても問題ない。
  • 可搬性・冪等性を確保する
    • 可搬性・冪等性を阻害する要因
      • CPUアーキテクチャが異なる
      • カーネルバージョンが異なる
      • ダイナミックリンクライブラリを使用する
  • dockerfile用DSL・DockerHubを用意することで、環境構築の手間を減らす
    • アプリケーションデプロイに特化している
      • 全てのアプリケーションがコンテナ化に向いているわけではない
        コンテナは一旦破棄し、作り直すと、初期状態に戻る。そのため、ステートレスなアプリケーションと相性が良い。反面、ステートフルなアプリケーションは下記のような工夫が必要である。
        • ホストPCとディレクトリを共有
        • 永続化が必要な部分をストレージ用コンテナに分離

コンテナの仕様

OCIにて標準化が進められています。

コンテナ適用例

  • 本番環境
    • 開発環境と本番環境との差異を吸収する
  • 開発メンバ間での開発環境の統一
  • サンプル環境・サンプルコードの配布
    • 実行環境ごと配布することになるので「動かない」可能性を減らせる

終わりに

コンテナの基本事項をまとめ直しました。コンテナ構築の際に役立てていただけたら幸いです。

参考

Docker/Kubernetes 実践コンテナ開発入門

コンテナ・ベース・オーケストレーション Docker/Kubernetesで作るクラウド時代のシステム基盤

さわって学ぶクラウドインフラ docker基礎からのコンテナ構築

【初心者向け】Linuxカーネルって一体なんだ?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0