1 Oracle Container Runtime for Dockerについて

Oracle Container Runtime for Dockerを使用すると、アプリケーションを作成してOracle LinuxシステムおよびDockerをサポートする他のオペレーティング・システム全体に分散できます。Oracle Container Runtime for Dockerは、アプリケーションをパッケージ化および実行するDocker Engineで構成され、アプリケーションをSoftware-as-a-Service (SaaS)クラウドで共有するDocker HubおよびOracle Container Registryと統合されています。

Docker Engineは主として、LXCアプリケーション・コンテナのようにシステム上で稼働している他のプロセスから一定の隔離した環境を提供して、単一のアプリケーションを実行するように設計されています。

重要:

Oracle Container Runtime for Dockerリリース17.03以上は、Oracle Linux 7 (x86_64)でのみ使用できます。Oracle Linux 6は、Oracle Container Runtime for Dockerバージョン17.03以上ではサポートされていません。

Docker HubはアプリケーションをDockerイメージとしてホストして、Docker環境の作成と管理を可能にするサービスを提供します。Docker Hubにアカウントを登録すると、それを使用して独自のプライベート・イメージを格納できます。Docker Hubに一般公開されているイメージへのアクセスには、Dockerにアカウントは必要ありません。また、Docker Hubは、信頼できることとサポート対象であることが認定されたエンタープライズ対応のアプリケーションをホストします。これらのアプリケーションは、検証済のパブリッシャによって使用可能にされるものです。Docker Hub上で配信されているアプリケーションの中には、支払が必要なものもあります。

ノート:

Docker HubはDocker, Incが所有および管理しています。オラクル社は、DockerイメージをDocker Hub上に用意し、ユーザーはDocker Engineを使用してそれをダウンロードして使用できます。オラクル社は、Docker Hub Registryのサイトまたはそのリポジトリのコンテンツに対して、それ以外の管理権を有していません。

詳細は、https://docs.docker.comを参照してください。

Oracle Container Registryには、ライセンス供与された商用とオープン・ソースのOracleソフトウェア製品のイメージが含まれています。イメージは、開発およびテスト目的でも使用できます。商用ライセンスは、本番と本番以外の両方での使用を対象としています。Oracle Container RegistryにはWebインタフェースが用意されており、顧客はOracleイメージを選択し、必要に応じて使用条件に同意してから、標準のDockerクライアント・ソフトウェアを使用してイメージをプルできます。このサービスの詳細は、「Oracle Container Registryからのイメージのプル」を参照してください。

テクニカル・プレビュー・リリース

オラクル社は、Oracle Container Runtime for Dockerの暫定リリースをテクニカル・プレビューとして使用可能にします。これらのリリースは、オラクル社によってサポートされていないため、本番での使用を意図したものではありません。

プレビュー・リリースを入手するには、Oracle Linux yumサーバー上のol7_previewリポジトリをサブスクライブします。リポジトリを有効にする前に、適切なパッケージをインストールして正しいリポジトリ構成を取得できます。

sudo yum install oraclelinux-developer-release-el7
sudo yum-config-manager --enable ol7_preview

このガイドで説明するインストールおよびアップグレード手順は、プレビュー・リリースごとに引き続き適用してください。

重要な更新

Docker Engineへの変更は、可能なかぎり下位互換性が維持される傾向があります。変更は通常明確にドキュメント化され、詳細な変更ログがhttps://docs.docker.com/release-notes/に維持されます。この項では、Oracle LinuxシステムでDocker Engineを利用するユーザーにとって重要事項または関心の対象であると考えられる変更を重点的に取り上げます。

Oracle Container Runtime for Docker 19.03

Oracle Container Runtime for Dockerの現在のリリースは、Docker 19.03アップストリーム・リリースをベースとし、前回のリリース以降のアップストリーム・リリースに存在する変更を取り込んでいます。このリリースの重要な変更点は、次のとおりです。

  • docker runおよびdocker createコマンドに、--domainnameオプションを使用してドメイン名を設定するオプションが含まれました。

  • docker image pullコマンドに、--quietオプションを使用してイメージを暗黙的にプルするオプションが含まれるようになりました。

  • docker contextコマンドを使用して、コンテキストのスイッチングを高速化します。

  • --capaddおよび--capdropではなく--capabilitiesを使用してカーネル機能をリストする機能が追加されました。

  • --sysctl list--sysctl-add listおよび--sysctl-rm listを使用してsysctlオプションを定義する機能が追加されました。

  • --cache-fromオプションによって、ビルダーにインライン・キャッシュのサポートが追加されました。

  • IPVLANドライバがサポートされるようになり、実験的なものとはみなされなくなりました。

  • イメージ・マニフェストv2スキーマ1が非推奨になり、v2スキーマ2が使用されるようになりました。

  • v1.10マイグレータが削除されました。

  • CVE-2020-13401が19.03.11エラータ・リリース・パッケージで解決されました。

Oracle Container Runtime for Docker 18.09

このリリースのOracle Container Runtime for Dockerは、アップストリームDocker 18.09リリースをベースとし、18.03リリース以降のアップストリーム・リリースに存在する変更を取り込んでいました。

特に、マルチレジストリのサポートは、このリリースではテクニカル・プレビューではなくなり、機能として有効になっています。また、--default-registryオプションを導入しています。このオプションを使用すると、標準のDocker Hubレジストリの代替となるレジストリを指すようにデフォルトのレジストリを変更できます。詳細は、「コンテナ・レジストリ・オプションの設定」を参照してください。

このリリースのDockerでは統合SSH接続ヘルパーを導入しています。これにより、いずれのDockerクライアントも、SSHを介してリモートのDocker Engineデーモンに安全に接続できます。リモート・デーモンに接続するには、-H ssh://user@host構文を使用します。たとえば:

docker -H ssh://docker_user@host1.example.com run -it --rm busybox                  

常に同じリモート・デーモンを使用するようにクライアントを構成するには、DOCKER_HOST環境変数を設定して適切なSSH URIを含めることができます。SSH接続ヘルパーは、ユーザーのローカルSSH構成ファイル内でホストに対して設定されているSSHオプションを考慮します。

Dockerクライアント・アプリケーションを独立したパッケージdocker-cliとしてインストールできるようになったため、Docker EngineデーモンをシステムにインストールしなくてもリモートDockerデーモン・インスタンスを管理できるようになりました。クライアント・パッケージは、Docker Engineデーモン・パッケージをインストールすると依存関係として自動的にインストールされます。

Docker 18.09では、Dockerイメージのビルドに使用されるビルド・アーキテクチャのオーバーホールであるBuildKitも導入されています。BuildKitモードは従来のビルド・アーキテクチャと下位互換性があるため、以前のイメージのビルドに使用されていたDockerfile形式を引き続き使用できます。システムでBuildKitを有効にするには、DOCKER_BUILDKIT環境変数の値を1に設定します。進行状況とビルド時間が含まれるようにBuildKitビルド出力が拡張され、多くのビルド・プロセスを並行して実行することでパフォーマンスを大幅に高め、ビルド時間を大きく短縮できます。新しいDockerビルド・アーキテクチャには、より安全な方法でシークレット情報をビルドに渡すオプションなど、セキュリティの向上も含まれています。詳細は、https://docs.docker.com/develop/develop-images/build_enhancements/にあるアップストリームのドキュメントを参照してください。この機能は、このリリースのOracle Container Runtime for Dockerではテクニカル・プレビューとして使用できます。

Docker 18.09では、containerdの新しいバージョンであるバージョン1.2.0を使用します。このバージョンのcontainerdパッケージには、最新のKubernetesリリースとの互換性を高めるために多くの拡張機能が含まれています。

Oracle Container Runtime for Docker 18.03

このリリースのOracle Container Runtime for Dockerは、アップストリームDocker 18.03リリースをベースとし、17.06リリース以降のアップストリーム・リリースに存在する変更を取り込んでいました。

特に注目すべき点は、プル操作の実行時に照会される追加のレジストリのリストを含めるために、--add-registryフラグでデーモンを実行できるようにするマルチレジストリのサポートを実装したことです。この機能により、Oracle Container Runtime for Dockerでは、ローカル・ミラー(Docker Hub)など代替レジストリ・ソースにフォールバックする前に、コンテナ・イメージを検索するデフォルト・レジストリとしてOracle Container Registryを使用できます。この機能で使用可能なその他の機能には、特定のDockerレジストリへのアクセスを防ぐために使用できる--block-registryフラグなどがあります。レジストリ・リストではすべてのイメージにソース・レジストリが接頭辞として自動的に付加されるため、Dockerイメージをリストすると常にイメージのプル元となるソース・レジストリが示されます。詳細は、「コンテナ・レジストリ・オプションの設定」を参照してください。

重要:

Dockerレジストリ・リスト機能は、テクノロジ・プレビューとして使用可能であり、サポート対象外です。テクノロジ・プレビューとして、この機能はまだ開発中ですが、テストおよび評価の目的で使用可能になっています。

--insecure-registryオプションもこのリリースに含まれており、証明書ベースの認証なしでHTTPS経由でレジストリを使用できます。これは、開発またはテスト環境で作業する場合には役立ちますが、本番では使用しないでください。

Docker 18.03には、Docker Swarmの代替としてKubernetesオーケストレーションとのより優れた統合を実現する拡張機能が導入されています。これには、他の様々なコンテナ化プロジェクトで使用されるネームスペース規則に従った変更が含まれます。

DockerfileのADDおよびCOPYコマンドに対して--chownオプションがサポートされるようになりました。これにより、ユーザーはイメージのビルド時にファイルの所有権をこれまで以上に制御できるようになります。

また、Dockerfileがビルド・コンテキストの外部に存在できるようになりました。これにより、Dockerfileをまとめて格納し、stdinのdocker buildコマンドでそれぞれのパスを参照できます。

dockerログへのロギングおよびアクセスに対するいくつかの改善が追加されました。これには、指定したタイムスタンプより前に発生した行にログ行を制限する--untilフラグなどがあります。

実験的なDocker信頼管理コマンドが追加され、Dockerイメージの信頼管理をより適切に処理できるようになりました。詳細は、docker trustコマンドを参照してください。

このリリースでは、Docker Swarmの変更と改善が行われました。Docker Swarmは、このリリースでも引き続きテクニカル・プレビューのままです。

オリジン間リソース共有でAPIを公開できる非推奨の--enable-api-corsデーモン・フラグが削除され、--api-cors-headerオプションが推奨されるようになりました。このオプションは、APIのAccess Control Allow Originヘッダーを設定し、オリジン間リソース共有のアクセス制御を決定するための文字列値を取得します。

このリリースでは、下位互換性のために保持されていた非推奨のdocker daemonコマンドが削除されました。

Oracle Container Runtime for Docker 17.06

このリリースでは、レガシー・レジストリとの通信が無効化され、デフォルトでv1プロトコルが実行されます。--disable-legacy-registry=falseデーモン・オプションを設定すればこのバージョンのプロトコルを使用して通信することも可能ですが、このサポートは非推奨です。

--graphデーモン・オプションも非推奨になり、--data-rootオプションが推奨されるようになりました。こちらの方がより説明的でわかりやすいためです。このオプションは、イメージ、ボリューム、コンテナ、ネットワーク、スウォーム・クラスタ状態およびスウォーム・ノード証明書のデータが含まれている親ディレクトリのパスを示します。

このリリースで最も重要な変更の1つは、マルチステージ・ビルドのサポートの追加です。これにより、ユーザーは最終イメージのコンパイルに使用できるが、最終イメージ自体に含める必要がない中間ビルド・イメージをプルするDockerfileを作成できます。これにより、イメージ・サイズを縮小し、実行中のコンテナのロード時間とパフォーマンスを向上させることができます。マルチステージ・ビルドの詳細は、「マルチステージDockerイメージ・ビルドの作成」を参照してください。

ビルド環境に対するその他の変更には、ARG命令という形式でビルド時引数をDockerfileで使用する機能などがあります。これにより、各イメージに環境変数を渡すことができます。FROM命令は、Dockerfileで先行するARG命令に定義された変数をサポートします。

Dockerロギングおよびネットワークの変更と改善は、主にDocker Swarm機能の改善に焦点を当てています。このリリースでは、多数のDocker Swarmの変更と改善が行われました。Docker Swarmは、このリリースでも引き続きテクニカル・プレビューのままです。

このリリースでは、SELinuxとともにoverlay2ストレージ・ドライバがサポートされています。以前のリリースでは、SELinuxが有効でオーバーレイ・ファイル・システムが使用中のときにはDocker Engineが起動しませんでした。新しいカーネルがこの組合せをサポートし、SELinuxサポート用のパッケージが更新されたため、このチェックは削除されました。

また、このリリースにはdocker-storage-configユーティリティも含まれており、このユーティリティを使用すると、構成がOracleガイドラインに準拠したものになるように、新規ユーザーがDocker記憶域を新しいインストール用に正しく設定できます。詳細は、「Docker記憶域の自動構成」を参照してください。

Docker 17.03

アップストリームDockerリリース・サイクルへの変更により、バージョン名に日付変数(YY.MM)を使用してアップストリームがいつリリースされたかを示す新しいバージョニング・スキームが導入されています。

17.03リリースには、1.13リリースの不具合修正が含まれており、メジャーな機能変更は含まれていません。Docker Swarm機能にはいくつかの改善があります。

overlay2ストレージ・ドライバの使用中にDocker Engineを実行するときは、SELinuxをPermissiveモードまたは無効にする必要があります。

XFS形式のファイル・システムでは、dtypeサポートが無効になっている場合は、このリリースのデフォルトのストレージ・ドライバがoverlay2から上書きされ、互換性のためにdevicemapperに設定されます。ストレージ・ドライバの上書きは、Dockerの新規インストールにのみ実装され、基になるファイル・システムがdtypeサポートなしでXFSとして検出される場合にのみ実装されます。詳細は、「Docker記憶域の構成」を参照してください。

Dockerのアップストリーム・デフォルト・ストレージ・ドライバは、devicemapperからoverlay2に変更されました。この変更によって、dtypeサポートが有効になっていないファイル・システムとともにオーバーレイを使用するシステムでは問題が発生することがあります。Oracle Linux 7のルート・パーティションは-n ftype=0 (dtypeサポートを無効化)で自動的にフォーマットされるため、XFSがファイル・システムとして選択されている場合、パッケージ・インストーラはファイル・システムでdtypeがサポートされているかをチェックし、これが有効になっていない場合は、デフォルトのストレージ・ドライバがdevicemapperを使用するように設定されます。これにより、新しくインストールされたシステムでDockerをすぐに使用できるようになり、そのためには/etc/sysconfig/docker-storageのストレージ・オプションでストレージ・ドライバを設定します。

代替のストレージ・ドライバを使用するようにDockerを再構成するには、Docker Engineデーモンの実行時に--storage-driverフラグを使用するか、daemon.json構成ファイルにstorage-driverオプションを設定します。btrfsを使用してフォーマットしたDocker専用の記憶域を使用することをお薦めします。XFS形式のファイル・システムでoverlay2ストレージ・ドライバを使用する場合は、dtypeサポートが有効になっていることを確認する必要があります。詳細は、「Docker記憶域の構成」を参照してください。ストレージ・ドライバをdevicemapperから変更する場合は、/etc/sysconfig/docker-storageに設定されているオプションを削除する必要があります。

この他、コマンド・セットに一貫性を持たせるために、DockerリモートAPIおよびDockerクライアントへの改善が行われました。また、Docker Engineに対して実行時の改善が行われました。Docker Swarmモードに関するさらなる開発についても説明します。

Docker 1.12

このリリースの焦点は、コンテナのオーケストレーションを単純化および改善することにあり、ロード・バランシング、サービス検出、高可用性、スケーラビリティなどの機能をすぐに使用できるようにすることでした。管理者がスウォームと呼ばれるDocker Engineグループでアプリケーションをデプロイして管理できるように、マルチホストおよびマルチコンテナのオーケストレーションを処理する機能がDocker Engineに組み込まれました。Dockerスウォーム・モードでは、Docker Engine自体とは独立して実行された元のスタンドアロンDocker Swarmサービスに含まれている機能の多くを利用でき、さらに組込みのロード・バランシングなどの機能も含まれています。このテクノロジをDocker Engineに統合することで、高可用性クラスタリング・テクノロジのデプロイメントが簡素化され、これらの機能が単一のAPIおよびCLI内に統合されます。Transport Layer Security (TLS)を使用してDocker Swarm内のすべての通信が暗号化され、ノードのスプーフィングを防ぐために暗号化ノード・フィンガープリント・キー・テクノロジを使用してクラスタ・ノードが保護されます。

重要:

Docker Swarm機能は、Oracle Linuxのテクノロジ・プレビューとしてリリースされています。テクノロジ・プレビューとして、この機能はまだ開発中ですが、テストおよび評価の目的で使用可能になっています。

Docker Engineは、docker-containerdおよびdocker-runcバイナリの組合せの最上部で実行されるように再設計されました。この変更は透過的であり、dockerコマンドは以前のリリースと同様に引き続き機能しますが、基礎となるテクノロジによってDockerアーキテクチャがOpen Container Initiative (OCI)仕様に従ってさらにモジュール化されます。これらの変更により、コンテナ実行バックエンドおよびコンテナ管理に対する新しい可能性が開かれます。具体的には、実行中のコンテナを再起動することなく、エンジンの再起動とアップグレードを実行できるようになります。

このバージョンのDocker Engineで特に重要なその他の変更は、次のとおりです。

  • MacVlanおよびIPVLANネットワーク・ドライバの実験的なサポートにより、既存のVLANネットワーク・インフラストラクチャを利用できるようにします

  • 組込みDNSサーバーにおけるAAAAレコード(別名IPv6サービス検出)のサポートにより、外部サーバーに転送することなくIPv6問合せをローカルに解決できるようにします

  • DNSラウンド・ロビンのための埋込みDNSサーバーからの複数のA/AAAAレコードにより、コンテナ間のロード・バランシングを容易にします。

  • 転送されたDNS問合せをコンテナ・ネット・ネームスペースからソーシングします

  • 少ないディスク領域の処理を向上させ、十分なディスク領域がない場合にデバイス・マッパーを正常に停止できるようにします。