「Docker」の版間の差分
提供: セキュリティ
(→Docker Engine 1.6) |
|||
行66: | 行66: | ||
* Docker デーモンを root 権限なしで動作可能にする。特権が必要となる操作は、限定されたスコープを持ち、監視されているサブプロセスに委譲する。 | * Docker デーモンを root 権限なしで動作可能にする。特権が必要となる操作は、限定されたスコープを持ち、監視されているサブプロセスに委譲する。 | ||
== Docker Engine 1.6 == | == Docker Engine 1.6 == | ||
− | * ロギングドライバAPIが追加されました。[[ | + | * ロギングドライバAPIが追加されました。[[syslog]]などのシステムにコンテナのログが送信でき、--log-driver オプションに json-file, syslog, none の3つのオプションが追加されています。デフォルトは、json-file です。 |
* すべての[[コンテナ]]に対して ulimit 設定ができるようになりました。 | * すべての[[コンテナ]]に対して ulimit 設定ができるようになりました。 | ||
* コンテナイメージ管理リポジトリ Registry 2.0 が公開されました。 | * コンテナイメージ管理リポジトリ Registry 2.0 が公開されました。 | ||
+ | |||
== Docker Engine 1.5 == | == Docker Engine 1.5 == | ||
* IPv6に対応しました。 -ipv6 フラグを指定することで、各コンテナにIPv6アドレスの割り当てが可能です。 | * IPv6に対応しました。 -ipv6 フラグを指定することで、各コンテナにIPv6アドレスの割り当てが可能です。 |
2015年4月23日 (木) 00:01時点における版
Docker とは、Linux用のアプリケーション実行環境のコンテナです。Dockerは、Go言語で開発され、Linuxの機能を利用します。
読み方
- Docker
- どっかー
目次
概要
オープンソースのコンテナ型仮想化ソフトウェアのDockerは、Docker社が開発しています。LinuxのDockerは、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は、Linuxのcgroupsとnamespaceの技術を用いて、コンテナを実現しています。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 が追加されました。カスタムのSELinuxやAppArmorのラベルやプロファイルを追加できます。
DockerにコンテナにIPアドレスを割り当てる
Dockerコンテナを起動すると以下のことが自動的に行われます。
- veth(Virtual Ethernet)インターフェースの生成
- docker0 インターフェースのIPアドレスの割り当て