.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

LXC

LXC(Linuxコンテナ)とは、Linuxネイティブなコンテナの事。

方式

  • Linux OSの持つコンテナ機能やリソースの管理機能などをベースに作られた、コンテナ型の仮想化技術
  • コンテナ自体は、Dockerが登場する以前から存在し、古くから商用製品にも採用されている技術。
  • 一般的に、Linux OS上での分離された空間を「Linuxコンテナ」と呼び、Linuxコンテナは、一般的に、LXCとも呼ばれる。

特徴

  • マシン全体を仮想化する仮想化技術と比べると、
    コンテナによる仮想化は軽量・高速で、実行に必要なリソースも少なくて済む。
  • システムの構成変更や展開の容易さなどから、
    開発段階から実運用環境まで、幅広く利用されている。
  • コンテナ上で動作するプログラムは、基本的にはLinuxのバイナリ。

Dockerコンテナ

  • 古いバージョンのDockerは、Linuxコンテナを使っていたため、
    LinuxコンテナもDockerコンテナも同一のものとして考えても差し支えなかった。
  • 現在のDockerは、libcontainerを利用するようになり、
    Linuxコンテナに依存する部分が無くなった。
  • このため、LinuxコンテナとDockerコンテナは、同じものではないが、考え方という観点では、
    LinuxコンテナもDockerコンテナも、同様の分離された空間を提供することには違いがない。

機能

Build

コンテナ・イメージ(Dockerイメージ)をビルドする機能

Ship

Dockerイメージを共有する機能
(コンテナを積む、輸送するイメージ)

Run

DockerコンテナDockerイメージを実行させる機能

  • プロダクション環境では複数のホストで動作させる。
  • これには、オーケストレーション・ツールを利用する。

エディション

CE

  • 無償
  • サポートが不要な環境で使用する。

EE

  • 有償
  • 種類
  • Basic
    • サポート
    • 認証済コンテナ
    • 認証済みプラグイン
  • Standard
    • Basicに加え
    • LDAP、AD統合機能
  • Advanced
    • Standardに加え
    • セキュリティ機能

サブシステム

イメージ

Dockerファイル

Dockerイメージを作成するファイル。

Docker multi stage build

  • Docker 17.05で導入された革新的な機能。
  • Buildを複数に分割して実行できる。
  • 今までも手動で複数のDockerファイルを組み合わせればできたが、
    1ファイルで書けるようになり気軽に中間イメージを色々使えるようになった。
  • ユースケース
  • 依存関係の分離
    • 開発用ビルドの依存
    • ランタイムの依存
  • , etc.

Dockerイメージ

Dockerレジストリ

「Docker」向けに、作成したDockerイメージを公開するサービス

クライアント

Dockerコマンド

Kitematic

サーバ

Docker Engine (エンジン)

Docker Swarm (スウォーム)

Docker Compose (コンポーズ)

複数のDockerコンテナを使うアプリケーションを定義する。

Docker Machine (マシン)

自分のネットワークやクラウド上に、自動的にDockerコンテナをデプロイする。

Dockerデーモン

DockerデーモンにDockerイメージの実行を要求すると、Dockerデーモンは、

  • この動作をカスタマイズするにはいくつかの方法がある。
    • イメージを指定する際
    • イメージ・プルポリシー

仕組み

名前空間

Linuxのnamespace機能は、
オブジェクトに対する名前付けにより隔離機能を提供する。

PID namespace

  • オブジェクト : LinuxのプロセスID
  • コンテナ内で、同じPIDを使用できるなど。

Network namespace

  • オブジェクト
    • ネットワークデバイス、IPアドレス、ポート番号
    • ルーティング・テーブル、フィルタリング・テーブル
  • コンテナ内で、同じポート番号を使用できるなど。

UID namespace

  • オブジェクト : LinuxのユーザID
  • ホスト、コンテナでの隔離する。
    (アカウントを異なる権限でマップする。)

Mount namespace

  • オブジェクト : ファイルシステム
  • ホスト、コンテナでの隔離する。

UTS namespace

  • オブジェクト : Unix Time-sharing System(現在は既にその意味は失われている)
  • システム識別子(nodename 及び domainname)を隔離する。

IPC namespace

  • オブジェクト : プロセス間通信(IPC)オブジェクト
    • 共有メモリ、メッセージキュー
    • スレッド同期ツールキット
  • コンテナ内で、IPCオブジェクトを隔離する。

リソース管理

Linuxのcgroups機能は、リソース管理機能を提供する。

リソース

  • CPU : cgroup 内のタスクによって使用されるCPUリソースの
    • cpu : 使用量の制限
    • cpuacct : 自動レポートを生成
    • cpuset : 配置をセット
  • memory : cgroup 内のタスクによって使用されるメモリ・リソースの
    • 自動レポートを生成
    • メモリ使用の上限設定
  • device : cgroup 内のタスクによるデバイスへのアクセス許可・拒否
  • freezer : cgroup 内のタスクを一時停止あるいは再開
  • net_cls : ネットワークパケットをタグ付け
  • blkio : cgroup 内のタスクによる、ブロックデバイス上の I/O へのアクセスを制御・監視

管理機能

プロセスをグループ化して管理可能

ルート ┬-> ユーザ・アプリ ┬-> エディタ
       │                  └-> 自作アプリ
       │
       └-> デーモン・アプリ ┬-> WWWサーバ
                             ├-> APサーバ
                             └-> DBサーバ

Dockerのネットワーク設定

ストレージ・ドライバ

AUFS

Btrfs

Device Mapper

OverlayFS

ZFS

インストール

Windowsから

Ubuntuから

CentOSから

利用

Windowsから

Ubuntuから

Windowsと同じでOK。

CentOSから

参考

内部リンク

Dockerコマンド

Dockerレジストリ

Dockerコンポーズ

Kubernetes

Docker Documentation

Docker Engine

http://docs.docker.jp/engine/index.html

Docker Compose

http://docs.docker.jp/compose/index.html

Docker Hub

http://docs.docker.jp/docker-hub/overview.html

Docker Machine

http://docs.docker.jp/machine/overview.html

Docker Registry

http://docs.docker.jp/registry/toc.html

Docker Swarm

http://docs.docker.jp/swarm/index.html

@IT

いまさら聞けないDocker入門

http://www.atmarkit.co.jp/ait/series/1511/

超入門Docker

http://www.atmarkit.co.jp/ait/series/5086/index.html

※ この記事は、Windows寄りになっている。

山市良のうぃんどうず日記

see the elephant

さくらのナレッジ

Qiita

docker-compose コマンド

コンテナ内で操作

  • ツール類のインストール
    • apt-get
      「are you root?」となる場合は、先頭にsodoを付与。
      apt-get update
      apt-get install XXX
    • yum
      yum install XXX

Docker multi stage build


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-06-28 (日) 23:17:26 (15d)