🦭

Podman v3.4.0 リリースノート

2021/10/01に公開

Podman v3.4.0がアップストリームでリリースされました。

https://github.com/containers/podman/releases/tag/v3.4.0

リリースノートを日本語に翻訳したものを公開します。どんな内容があるのか把握するのにお役立てください。

以下、リリースノート日本語翻訳


v3.4.0

新機能

  • PodがInitコンテナをサポートするようになりました!Initコンテナとは、Podの残りの部分が起動する前に実行されるコンテナです。Initコンテナには2つのタイプがあります。「always」は常にポッドの起動前に実行され、「once」はポッドの初回起動時にのみ実行され、その後は削除されます。これらは、podman createコマンドの--init-ctrオプションで追加できます。
  • Initコンテナのサポートは、podman play kubepodman generate kubeにも追加されました。KubernetesのYAMLに含まれるInitコンテナは、PodmanのInitコンテナとして作成され、Podmanによって生成されたYAMLは、作成されたすべてのInitコンテナを含みます。
  • podman play kubeコマンドが、イメージのビルドをサポートするようになりました。--buildオプションが与えられ、指定されたイメージの名前を持つディレクトリが現在の作業ディレクトリに存在し、有効なContainerfileまたはDockerfileが存在する場合、そのイメージがビルドされ、コンテナに使用されます。
  • podman play kubeコマンドに新しいオプション、--downが追加され、与えられたKubernetesのYAMLで作成されたポッドやコンテナを削除することができるようになりました。
  • podman generate kube コマンドは、ボリューム上の SELinux マウントオプション (:z:Z) に対して、podman play kube コマンドが尊重するアノテーションを生成するようになりました。
  • ポッド内のすべてのコンテナのログを同時に返す、podman pod logsという新しいコマンドが追加されました。
  • 2つの新しいコマンド、podman volume export(ボリュームをtarファイルにエクスポートする)とpodman volume import(与えられたtarファイルからボリュームを生成する)が追加されました。
  • podman auto-update コマンドは、シンプルなロールバックをサポートするようになりました。自動アップデート後にコンテナの起動に失敗した場合、以前のイメージにロールバックして再度起動します。
  • Pod はデフォルトでユーザーネームスペースを共有するようになり、podman pod create コマンドは --userns オプションをサポートするようになりました。これにより、ルートレスのポッドを --userns=keep-id オプションで作成できるようになりました。
  • podman pod psコマンドは、--filterオプションで指定したタイムスタンプ以前に作成されたPodを返すuntilという新しいフィルタをサポートするようになりました。
  • podman image scpコマンドが追加されました。このコマンドは、異なるホスト間でイメージを転送することができます。
  • podman statsコマンドでは、情報が更新されるまでの時間を指定する新しいオプション、--intervalをサポートします。
  • podman inspectコマンドは、コンテナによって公開された(しかし外部には公開していない)ポートを含むようになりました(例:--publish-all が指定されていない場合、--expose からのポート)。
  • podman inspectコマンドに新しいブール値 Checkpointedが追加されました。これは、podman container checkpoint操作の結果としてコンテナが停止したことを示します。
  • podman volume create で作成されたボリュームは、XFS 上で実行されたときにクオータの設定をサポートするようになりました。sizeinode オプションは、ボリュームが消費する最大サイズと最大inode数を制限することができます。
  • podman info コマンドが、使用可能なログドライバ、ネットワークドライバ、ボリュームプラグインの情報を出力するようになりました (#11265)。
  • podman info コマンドは、現在使用されているログドライバと、使用されているディストリビューションのバリアントとコードネームを出力するようになりました。
  • podman machine init で作成した VM のパラメータ(ディスク容量、メモリ、CPU)を containers.conf で設定できるようになりました。
  • podman machine ls コマンドは、podman machine で管理されている VM の追加情報(CPU、メモリ、ディスクサイズ)を表示するようになりました。
  • podman ps コマンドは、ヘルスチェックを行うコンテナの状態に、ヘルスチェックの状態を含めるようになりました (#11527)。

変更点

  • podman build コマンドには、Docker との互換性を高めるために、podman buildx という新しいエイリアスが追加されています。すでに多くの docker buildx フラグのサポートを podman build に追加しており、今後もそうすることを目指しています。
  • ユーザーセッションや書き込み可能な一時ファイルディレクトリがない状態でPodmanが実行された場合、より適切なエラーメッセージが表示されるようになりました。
  • デフォルトのログドライバが file から journald に変更されました。fileドライバはログローテーションを適切にサポートしていなかったので、これでより良い体験ができるはずです。journaldがシステムで利用できない場合、Podmanは自動的にfileに戻ります。
  • Podman がネットワークの削除に ipコマンドを使わなくなりました (#11403)。
  • podman network createで非推奨の--macvlanフラグが使用されると警告が出るようになりました。このフラグはPodman 4.0のリリースで完全に削除される予定です。
  • podman machine start コマンドは、VM の起動に成功したときにメッセージを表示するようになりました。
  • podman statsコマンドが、一時停止中のコンテナにも使えるようになりました。
  • podman unshareコマンドは、ユーザーネームスペースで実行されたコマンドの終了コードを返すようになりました(コマンドが正常に実行されたと仮定しています)。
  • ヘルスチェックに成功しても、ログスパムを減らすためにシステムログに healthy 行が追加されなくなりました。
  • Podman リモートクライアントでショートネームのプロンプトが表示されない場合の一時的な回避策として、podman machine で作成されたVMは、デフォルトで docker.io レジストリのみを使用するようになりました。

バグ修正

  • sysctls(特にcontainers.confで指定されたデフォルトのsysctls)の定義に空白があると、正しく解析されないというバグを修正しました。
  • Windowsリモートクライアントでボリュームパスの検証が正しく行われないというバグを修正しました(#10900)。
  • journald ログドライバで実行されたコンテナからのログの最初の行がスキップされることがあるバグを修正しました。
  • podman commit で作成したイメージに、コンテナが公開しているポートが含まれていなかったバグを修正しました。
  • podman auto-update コマンドがイメージをpullする際に io.containers.autoupdate.authfile ラベルを無視してしまうバグを修正しました (#11171)。
  • podman create および podman run--workdir オプションに、ボリュームがマウントされているディレクトリを設定できないバグを修正しました (#11352)。
  • systemd が管理する Podman コンテナで systemd のソケットアクティベーションが適切に動作しないバグを修正しました (10443)。
  • コンテナに追加された環境変数のシークレットが、コンテナ内で起動した exec セッションで利用できないというバグを修正しました。
  • XDG_RUNTIME_DIRに長いパスが設定されている場合、ルートレスコンテナがポートフォワーディングサービスrootlessportの起動に失敗することがあるバグを修正しました。
  • podman createpodman run--systemd オプションへの引数が大文字と小文字を区別していたバグを修正しました (#11387)。
  • podman manifest rm コマンドが、マニフェスト自体ではなく、マニフェストから参照されるイメージも削除してしまうバグを修正しました (#11344)。
  • 環境変数TMPDIRが設定されていない場合、OS XのPodmanリモートクライアントが正しく動作しないというバグを修正しました(#11418)。
  • /etc/hosts ファイルに localhost のエントリが含まれていることが保証されていないバグを修正しました (これは --net=host が使用されている場合にも保証されません。このようなコンテナはホストの /etc/hosts と正確に一致します) (#11411)。
  • podman machine start コマンドがサポートされていない CPU 機能に関する警告を表示してしまうバグを修正しました (#11421)。
  • cgroup の情報にアクセスする際に、podman info コマンドがセグメンテーションを起こすことがあるバグを修正しました。
  • コンテナが終了したときに podman logs -f コマンドがハングアップするバグを修正しました (#11461)。
  • 再起動ポリシーを指定したコンテナで podman generate systemd コマンドが使用できないバグを修正しました (#11438)。
  • リモートの Podman クライアントの podman build コマンドで、クライアントの UID と GID が 65536 以上の場合に、コンテナのビルドに失敗するバグを修正しました (#11474)。
  • リモートのPodmanクライアントのpodman buildコマンドで、コンテキストディレクトリがシンボリックリンクの場合にコンテナのビルドに失敗するバグを修正しました(#11732)。
  • 非ブリッジネットワーク構成が指定されたときに、podman play kube--network フラグが適切に解析されなかったバグを修正しました。
  • 検査対象のコンテナが検査中に削除された場合に、podman inspectコマンドがエラーになることがあるバグを修正しました (#11392)。
  • podman play kube コマンドが、containers.conf で指定されたデフォルトの pod infra イメージを無視してしまうバグを修正しました。
  • ある状況下で podman inspect--format オプションが機能しないというバグを修正しました (#8785)。
  • リモートの Podman クライアントの podman run および podman exec コマンドが 8192 バイトごとに出力をスキップしてしまうバグを修正しました (#11496)。
  • 実行中にコンテナが再起動した場合に、podman statsコマンドが意味のない結果を出力するバグを修正しました (#11469)。
  • WindowsクライアントでSTDOUTがリダイレクトされると、リモートのPodmanクライアントがエラーになるバグを修正しました(#11444)。
  • コンテナ内のアプリケーションが 125 で終了した場合に、podman run コマンドが 0 を返すことがあるというバグを修正しました (#11540)。
  • --restart=alwaysを設定したコンテナが、rootlessportポートフォワーディングサービスを使って自動的に再起動できなかったバグを修正しました。
  • コンテナがポッドの一部である場合、podman createpodman run--cgroups=split オプションが静かに破棄されてしまうバグを修正しました。
  • 与えられたイメージ名にタグが含まれていると、podman container runlabelコマンドが失敗することがあるというバグを修正しました。
  • ある状況下で Podman が /etc/hosts に余分な 127.0.0.1 エントリを追加してしまうバグを修正しました (#11596)。
  • リモートの Podman クライアントの podman untag コマンドが、ダイジェストを含むタグを適切に処理できないバグを修正しました (#11557)。
  • podman ps--format オプションが、表形式の出力のための table 引数を適切にサポートしていなかったバグを修正しました。
  • podman ps--filter オプションがヘルスチェックの状態によるフィルタリングを適切に処理していなかったバグを修正しました (#11687)。
  • podman runpodman start --attach コマンドが、既に削除されたコンテナの終了コードを取得する際に競合してエラーになるバグを修正しました (例: 外部からの podman rm -f による) (#11633)。
  • podman generate kube コマンドが生成された YAML にデフォルトの環境変数を追加してしまうバグを修正しました。
  • podman generate kube コマンドが元のイメージのデフォルトの CMD を生成された YAML に追加してしまうバグを修正しました (#11672)。
  • ある状況下で podman rm --storage コマンドがコンテナの削除に失敗することがあるというバグを修正しました (#11207)。
  • Linux 上で podman machine ssh コマンドを実行すると失敗することがあるというバグを修正しました (#11731)。
  • すでに停止しているコンテナに対してpodman stopコマンドを使用するとエラーになるというバグを修正しました(#11740)。
  • podman rename コマンドを使用してポッド内のコンテナの名前を変更した後、podman pod rm を使用してポッドを削除すると、コンテナが削除されているにもかかわらず、Podman がコンテナの新しい名前が永久に使用されていると信じてしまうバグを修正しました (#11750)。

API

  • Libpod Pull の Image 用エンドポイントに新しいクエリパラメータ quiet が追加されました。このパラメータを true に設定すると、Image Pull のプログレスレポートが表示されなくなります (#10612)。
  • Compat Eventsエンドポイントに、Docker v1.21 APIで非推奨とされていたいくつかのフィールドが追加され、古いクライアントとの互換性が向上しました。
  • Compat List と Inspect endpoints for Images は、Docker との互換性を高めるために、イメージ ID の前に sha256: を付けるようになりました (#11623)。
  • コンテナのCompat Createエンドポイントで、ヘルスチェック関連のフィールドのデフォルト値が正しく設定されるようになりました (#11225)。
  • コンテナ用のCompat Createエンドポイントが、Mountsフィールドで提供されるボリュームオプションをサポートするようになりました (#10831)。
  • Secrets の Compat List エンドポイントでは、新しいクエリパラメータ filter がサポートされ、返される結果をフィルタリングできるようになりました。
  • Compat Authエンドポイントがレジストリへのログインに失敗したときに、正しいレスポンスコード(400ではなく500)を返すようになりました。
  • バージョンのエンドポイントに、使用されているOCIランタイムとConmonの情報が含まれるようになりました(#11227を参照してください)。
  • X-Registry-Configヘッダーが適切に処理されず、画像を取り込む際にエラーが発生するというバグを修正しました(#11235)。
  • エラーメッセージを作成する際に、無効なクエリパラメータを指定すると、NULLポインタの参照が発生することがあるというバグを修正しました。
  • APIリクエストとレスポンスのトレースレベルでのロギングが大幅に改善され、リクエストとレスポンスを相関させるためのX-Reference-Idヘッダーが追加されました(#10053を参照)。

その他

  • Buildah を v1.23.0 に更新しました。
  • container/storage library を v1.36.0 に更新しました。
  • container/image library を v5.16.0 に更新しました。
  • container/common library を v0.44.0 に更新しました。

Discussion