Posted at

Docker 1.8 リリースのまとめ

More than 3 years have passed since last update.


概要

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 をインストールしてみた際の画像です。

【インストーラー】

ToolBox01.PNG

【インストーラー:コンポーネントの設定】

ToolBox02.PNG

【インストール後にデスクトップに作成されるアイコン】

ToolBox03.PNG

【Docker Quickstart Terminal を起動したところ】

ToolBox04.PNG

【Kitematic を起動したところ】

ToolBox05.PNG

【Kitematic からコンテナの起動が可能】

ToolBox06.PNG


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 プロキシの設定をサポート、など。