Docker

提供: セキュリティ
移動: 案内検索
スポンサーリンク

Docker とは、Linux用のアプリケーション実行環境のコンテナです。Dockerは、Go言語で開発され、Linuxの機能を利用します。

読み方

Docker
どっかー

概要

オープンソースのコンテナ型仮想化ソフトウェアのDockerは、Docker社が開発しています。LinuxDockerは、LXCの技術を使用していました。

Dockerでは、コンテナと呼ばれる隔離された空間でプロセスを実行します。

コンテナのスタック
隔離空間
プロセス プロセス
隔離空間
プロセス プロセス
プロセス プロセス
OS
物理マシン

Dockerの特徴

  • コンテナ型であるため、仮想マシン型よりも軽量で、高速です。
  • Docker 社がコンテナイメージのリポジトリ Docker Hub を提供している。
  • コンテナの作成からアプリケーションのインストールまでの手順を Dockerfile と呼ばれるテキストファイルに定義できる。
  • Dockerのコンテナは、揮発性で、コンテナ内の変更は、コンテナを破棄するときに消えます。フィアルシステムには、AUFS(Another Union File System)を利用しています。

Docker と LXC

Docker 0.9からは、LXC(Linux Containers)に依存しません。libcontainerドライバが実装され、LXCなしに稼働できます。

  • Docker
    • libcontainer
    • libvirt
    • lxc
    • systemd-nspawn

Dockerのセキュリティ

Dockerは、Linuxcgroupsnamespaceの技術を用いて、コンテナを実現しています。Dockerの提供する機能は、本質的には、LXCと同じであるため、セキュリティリスクも同じと考えられます。

Dockerは、rootの権限で実行されるため、コンテナroot権限が必要となります。root権限が必要なる原因は、Linuxカーネルにあります。

DockerデーモンとRest API 経由のアクセスを保護する必要があります。

Docker でのセキュリティ改善目標は、以下の通りです。

  • コンテナは、root ユーザを 非 root ユーザにマップする。権限昇格の影響を緩和する。
  • Docker デーモンを root 権限なしで動作可能にする。特権が必要となる操作は、限定されたスコープを持ち、監視されているサブプロセスに委譲する。

Docker Engine 1.6

  • ロギングドライバAPIが追加されました。syslogなどのシステムにコンテナのログが送信でき、--log-driver オプションに json-file, syslog, none の3つのオプションが追加されています。デフォルトは、json-file です。
  • すべてのコンテナに対して ulimit 設定ができるようになりました。
  • コンテナイメージ管理リポジトリ Registry 2.0 が公開されました。

Docker Engine 1.5

  • IPv6に対応しました。 -ipv6 フラグを指定することで、各コンテナにIPv6アドレスの割り当てが可能です。
  • コンテナは、--read-onlyフラグでリードオンリーファイルシステムを利用できます。コンテナ内のアプリケーションがファイルを書き出す先を制限できます。

Docker Engine 1.3

  • Docker 1.3 では、Docker イメージへのデジタル署名機能が追加されました。公開されているイメージが改ざんされていないことを示し、信頼性を保障できます。ただし、イメージが破損、または、改ざんされている場合に警告を行うのみで、起動を停止する機能はありません。今後の対応として、発行者の認証、イメージの品質保証、PKI管理機能が追加されていく見込みです。
  • デバッグ用に docker exec コマンドが追加されました。
  • CLIのオプションとして --security-opt が追加されました。カスタムのSELinuxAppArmorのラベルやプロファイルを追加できます。

DockerにコンテナにIPアドレスを割り当てる

Dockerコンテナを起動すると以下のことが自動的に行われます。

  • veth(Virtual Ethernet)インターフェースの生成
  • docker0 インターフェースのIPアドレスの割り当て

関連項目




スポンサーリンク