第12章 Linux コンテナー
12.1. Docker Technology を使用した Linux コンテナー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux Atomic Host 7.1.4 には、以下の更新が含まれています。
docker パッケージがアップストリームバージョン 1.7.1 にアップグレードされ、バージョン 1.7 に対するさまざまな改善が含まれ、Red Hat Enterprise Linux Atomic Host 7.1.3 に含まれるバージョン 1.6 の大幅な変更が含まれています。バージョン 1.6 から 1.7.1 までの修正および機能の完全リストは、以下の変更ログを参照し https://github.com/docker/docker/blob/master/CHANGELOG.md てください。また、Red Hat Enterprise Linux Atomic Host 7.1.4 には、以下の変更が含まれています。
- firewalld が docker コンテナーでサポートされるようになりました。firewalld がシステムで実行している場合は、firewalld パススルーを介してルールが追加されます。firewalld が再読み込みされると、設定が再適用されます。
- Docker は、コンテナー固有の cgroup 情報を
/sys/fs/cgroupディレクトリー下にマウントするようになりました。アプリケーションによっては、利用可能なリソースの量に基づいて決定を行うものもあります。たとえば、Java 仮想マシン(JVM)は、利用可能なメモリー量を確認して、十分なプールを割り当ててパフォーマンスを向上させることができます。これにより、アプリケーションは/sys/fs/cgroup/memoryを読み取ることで、コンテナーで利用可能なメモリーの最大数を検出できます。 - ループバックデバイスでデバイスマッパーを使用している場合は、docker run コマンドが警告メッセージを出力するようになりました。
dm.thinpooldevオプションを実稼働環境のストレージオプションとして使用することを強く推奨します。実稼働環境ではループバックを使用しないでください。 --init=systemdフラグを使用して、systemd モードでコンテナーを実行できるようになりました。systemd でコンテナーを PID 1 として実行している場合、このフラグはすべての systemd 機能をオンにして、非特権コンテナーで実行できるようにします。container_uuidを環境変数として設定し、/etc/machine-idファイルに保存します。このファイルは、コンテナー内の journald を外部ログにリンクします。ホストディレクトリーをコンテナーにマウントし、systemd が特権を必要としないようにし、ホストからコンテナーにジャーナルディレクトリーをマウントします。コンテナー内で journald を実行すると、ホストの journalctl ユーティリティーにコンテンツを表示できます。/runディレクトリーを tmpfs としてマウントします。次に、--systemdが指定されている場合、/sys/fs/cgroupディレクトリーをコンテナーに読み取り専用として自動的にマウントします。systemd モードで実行する際に、systemd に適切なシグナルを送信します。- docker search コマンドを使用したコンテナーでの検索エクスペリエンスが改善されました。
- インデックスを追加して検索結果を追加できるようになりました。
- リモート名にレジストリー名を付けることができます。
- インデックス名が IP アドレスでない場合は短縮できます。
- インデックス名の一覧を表示しないように
--no-indexオプションが追加されました。 - インデックスの保存時のエントリーのソート:
index_name、start_count、registry_name、name、およびdescriptionでソートできます。 - インデックスが省略された場合のエントリーソート:
registry_name、star_count、name、およびdescriptionでソートできます。
- Docker info API を使用して設定済みのレジストリー一覧を公開できるようになりました。
Red Hat Enterprise Linux Atomic Host 7.1.3 には、以下の更新が含まれています。
- docker-storage-setup
- docker-storage-setup は論理ボリュームマネージャー(LVM)に依存してシンプールを自動的に拡張するようになりました。デフォルトでは、ボリュームグループ内の 60% の空き領域がシンプールに使用され、LVM により自動的に拡張されます。シンプールが 60% 満杯になると、20% 増えます。
- docker-storage-setup のデフォルト設定ファイルは
/usr/lib/docker-storage-setup/docker-storage-setupにあります。このファイルの設定は、/etc/sysconfig/docker-storage-setupファイルを編集して上書きできます。 - シンプールを作成するために raw ブロックデバイスを docker サービスに渡すサポートが削除されました。docker-storage-setup サービスは LVM シンプールを作成し、docker に渡すようになりました。
- シンプールのチャンクサイズが 64K から 512K に増加しました。
- デフォルトでは、root ユーザーのパーティションテーブルは拡張されません。この動作は、
/etc/sysconfig/docker-storage-setupファイルにGROWPART=trueオプションを設定することで変更できます。 - シンプールは
skip_block_zeroing機能で設定されるようになりました。つまり、新しいブロックがプールにプロビジョニングされると、ゼロになりません。これは、パフォーマンス上の理由から行われます。この動作を変更するには、--zeroオプションを使用します。lvchange --zero y thin-pool
lvchange --zero y thin-poolCopy to Clipboard Copied! Toggle word wrap Toggle overflow - デフォルトでは、devicemapper グラフドライバーを使用する docker ストレージはループバックデバイスで実行されます。このセットアップは実稼働環境の準備ができていないため、使用しないことを強く推奨します。これについてユーザーに警告する警告メッセージが表示されます。ユーザーは、このストレージフラグ
dm.no_warn_on_loop_devices=trueを渡すことで、この警告を抑制するオプションがあります。
- Docker 形式のコンテナーでのストレージの処理に関連する更新:
- SELinux で検証された NFS ボリュームプラグインが追加されました。これには、NFS ボリュームプラグインを使用した NFS マウント GlusterFS が含まれます。
- NFS ボリュームプラグイン用に検証される永続ボリュームサポートのみが追加されました。
- SELinux で検証されたローカルストレージ(HostPath ボリュームプラグイン)が追加されました(ドキュメントで説明されている回避策が必要です)。
- SELinux で検証された iSCSI ボリュームプラグインが追加されました。
- SELinux で検証された gcePersistentDisk Volume Plugins が追加されました(ドキュメントで説明されている回避策が必要です)。
Red Hat Enterprise Linux Atomic Host 7.1.2 には、以下の更新が含まれています。
- docker-1.6.0-11.el7
- 完全に再設計されたレジストリーと、Docker 1.6 がサポートする新しいレジストリー API。これにより、イメージのプルのパフォーマンスおよび信頼性が大幅に向上します。
- コンテナーログを他のシステムに送信できる新しいロギングドライバー API が docker ユーティリティーに追加されました。
--log driverオプションが docker run コマンドに追加され、JSON ファイル、syslog、または none の 3 つのサブオプションが使用されます。noneオプションは、必須ではない詳細なログを持つアプリケーションで使用できます。 - Dockerfile 命令は、コミットおよびインポート時に使用できるようになりました。また、これにより、イメージ全体を再構築せずに、実行中のイメージに変更を加える機能が追加されます。
commit --changeおよびimport --changeオプションを使用すると、新しいイメージに適用する標準の変更を指定できます。これらは Dockerfile 構文で表現され、イメージの変更に使用されます。 - 今回のリリースで、カスタム cgroups のサポートが追加されました。
--cgroup-parentフラグを使用して、特定の cgroup を渡してコンテナーを実行できます。これにより、独自に cgroups を作成および管理できます。これらの cgroups のカスタムリソースを定義し、コンテナーを共通の親グループ下に配置できます。 - 今回の更新により、Docker デーモンの設定時に、すべてのコンテナーのデフォルトの ulimit 設定を指定できるようになりました。以下に例を示します。このコマンドは、すべてのコンテナーに対してソフト制限 1024 とハード制限の 2048 子プロセスを設定します。異なる ulimit 値には、このオプションを複数回設定できます。以下に例を示します。
docker -d --default-ulimit nproc=1024:2048
docker -d --default-ulimit nproc=1024:2048Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらの設定は、以下のようなコンテナーの作成時に上書きできます。--default-ulimit nproc=1024:2408 --default-ulimit nofile=100:200
--default-ulimit nproc=1024:2408 --default-ulimit nofile=100:200Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、デーモンに渡されるデフォルトの nproc 値が上書きされます。docker run -d --ulimit nproc=2048:4096 httpd
docker run -d --ulimit nproc=2048:4096 httpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow --block-registryフラグを指定してレジストリーをブロックする機能。- 複数のレジストリーを一度に検索するためのサポート。
- ローカルイメージをパブリックレジストリーにプッシュするには、確認する必要があります。
- 短縮名は、docker.io レジストリーが最後に設定されたレジストリーの一覧に対してローカルで解決されます。これにより、プルは常に完全修飾名で行われます。
Red Hat Enterprise Linux Atomic Host 7.1.1 には、以下の更新が含まれています。
- docker-1.5.0-28.el7
- IPv6 サポート:グローバルにルーティングおよびローカルリンクアドレスのサポートを利用できます。
- 読み取り専用コンテナー:このオプションは、コンテナー内のアプリケーションがファイルシステム全体に書き込みできないように制限するために使用されます。
- 統計 API およびエンドポイント:ライブ CPU、メモリー、ネットワーク IO の統計をコンテナーからストリーミングできるようになりました。
- docker build -f docker_file: docker build で使用される Dockerfile 以外のファイルを指定するコマンドです。
- 修飾されていないプルおよび検索に使用する追加のレジストリーを指定する機能。これの前に、非修飾名はパブリック Docker Hub でのみ検索されていました。
--block-registry= <registry> フラグを使用した特定レジストリーとの通信をブロックする機能。これには、パブリック Docker Hub をブロックする機能と、すべてのレジストリーをブロックする機能が含まれます。- パブリックレジストリーにプッシュするには確認が必要です。
- 一覧表示されると、すべてのリポジトリーが完全修飾されるようになりました。docker images の出力には、プルされたすべてのイメージのソースレジストリー名が一覧表示されます。docker search の出力には、すべての結果のソースレジストリー名が表示されます。