概要
Docker 1.8 と関連ツール類の最新バージョンがリリースされたのでまとめてみます。対象は以下のものです。
- Docker Engine 1.8
- Docker Toolbx
- Docker Registry 2.1
- オーケストレーションツール(Compose, Swarm, Machine)
Docker Engine 1.8
Docker イメージに対するセキュリティ機能の Docker Content Trust(DCT) が目玉で、その他ボリューム周りやログ周りなどに更新が入っている。なお、1.8 にはバグがあり、すぐに1.8.1 がリリースされている。
Docker Content Trust(DCT)
Docker イメージを「なりすまし」と「改ざん」から保護するセキュリティ機能で、以下から構成される。
- Docker イメージへ発行者のデジタル署名を付ける
- イメージの利用時(pull など)に「発行者」と「イメージが改ざんされていないこと」を検証する
DCT はそれ用の新しいコマンドが追加されたわけではなく、Docker クライアントの push, build, create, pull, run コマンドに対して自動で機能する。
- push, build - 自動で鍵の生成やイメージが署名が行われる
- create, pull, run - 自動でイメージの署名が検証される
DCT はデフォルトでは無効になっており、環境変数 DOCKER_CONTENT_TRUST をセットすると使えるようになるようだが、自分の環境(CentOS7.1 + Docker 1.8.1) ではまだ動作させることができていない。
# DCT を有効化する
export DOCKER_CONTENT_TRUST=1
# Official なイメージを Pull してみる
# エラーになって pull できない(本来なら署名の検証が行われて、問題無ければ pull 出来るはず)
$ docker pull centos:latest
no trust data available for remote repository
# 自分で作ったイメージを push してみる
# エラーになって push できない(本来なら、署名を付けるステップに進むはず)
$ docker push arturias/trusttest:latest
(中略)
Signing and pushing trust metadata
ERRO[0007] Could not publish Repository: invalid character '<' looking for beginning of value
no trust data available for remote repository
なお、DCT は Notary というコンテンツの発行や検証のためのユーティリティを使って開発されており、さらに Notary は The Update Framework (TUF) を利用して作られている。
ボリュームプラグインの安定板
Docker のボリュームとして、3rd パーティ製のストレージシステムを使用できる機能。Docker Engine 1.7 で Experimental として導入されたが 1.8 で安定板になった。Blockbridge, Ceph, ClusterHQ, EMC, Portworx 用のプラグインが利用可能。
Logging Drivers のプラグインの追加
Docker Engine 1.6 で導入されたログのプラグイン機構(Logging Driver)では、コンテナのログを syslogd などに転送できるようになったが、Docker Engine 1.8 でプラグインが追加されて GELF, Fluentd にログを転送できるようになった。
その他
ホストからコンテナ内へのファイルコピー
以前のバージョンでは、docker cp で「コンテナからホスト」へファイルコピーはできたが、「ホストからコンテナ」へファイルがコピーできるようになった。
docker cp ./test.txt ContainerName:/tmp/test.txt
Docker デーモンの起動方法
以前は Docker デーモンを "docker -d" というコマンドラインで起動していたが、"docker daemon" で起動するようになった。これにより、docker コマンドのオプションが、クライアント用なのかデーモン用なのか分かりやすくなった。
docker ps コマンドの出力のカスタマイズ
docker ps コマンドを出力を --format でカスタマイズできるようになった。以下は、「コンテナID、イメージ名、ポート番号」を出力する例:
$ docker ps --format "{{.ID}} : {{.Image}} : {{.Ports}}"
7e7c64c66a13 : mongo : 27017/tcp
7bc088b5b664 : nginx : 80/tcp, 443/tcp
Docker クライアントの設定
Docker クライアントの設定ファイル類が ~/.docker に置かれるようになった。DCTで使われるキーもこの場所に置かれる。
Docker Toolbox
Mac や Windows 上で簡単に Docker 環境を構築するためのツールで、今まで使われていた Boot2Docker を置き換えるもの。
次のコンポーネントがインストールされて、すぐに Docker が使えるように設定される。
- Docker クライアント
- Docker Machine
- Docker Compose (Mac の場合のみ)
- Docker Kitematic
- VirtualBox
以下、Windows 8.1 に Docker Toolbox をインストールしてみた際の画像です。
【Docker Quickstart Terminal を起動したところ】
Docker Registry 2.1
イメージの pull の高速化の他、いくつかの新機能が追加されている。
- API 経由でのリポジトリの列挙
- Docker Registry のイメージ保存場所として今までは AWS S3 と Azure が使えたが、今回 OpenStack Swift、Ceph Rados、Aliyun OSS が追加された。
オーケストレーションツール(Compose, Swarm, Machine)
- Compose 1.4
コンテナの停止・開始の高速化、container_name オプションによるコンテナ名の指定など。 - Swarm 0.4
ビルトインのスケジューラの改善(イメージの pull に失敗したときに、そのイメージを持っているホストにコンテナを配備する)、Mesos との統合など。 - Machine 0.4
Docker Engine が使用する HTTP プロキシの設定をサポート、など。