コンテナ管理コマンド skopeo - oomichi/try-kubernetes GitHub Wiki

概要

Kubespray のコードレビュー議論で「dockerコマンドの代りに nerdctl を使うべきかな」という指摘から「nerdctl は containerd に依存しているから、skopeo のほうがさらに良いのではないか」という指摘が出てきた。skopeo は使ったことがないので、試してココに記載していく。

  • Red Hatが開発主導

公式サイトから

  • skopeo はコンテナイメージを異なるコンテナストレージ間で移動させるためのツールだ。これによりユーザは docker.io, quay.io そしてプライベートなコンテナイメージレジストリなど異なるコンテナストレージ間でイメージをコピーすることが可能になる。
  • skopeo の大きな長所の一つは、ユーザが skopeo を実行するのにルート権限を必要としないことだ。そして外部のコンテナレジストリ間でイメージのコピーが必要な際にもローカルにイメージをコピーしなくて済むことだ。
  • skopeo はデーモンが稼働中であることを要求しない。
  • skopeo を作成した経緯: Red Hat開発者 Antonio Murdaca 氏がDocker本家でcontainer imageをフルダウンロードせずにイメージの中身を確認するためのコマンド「docker inspect --remote IMAGE」を提案したが、Dockerメンテナから内部実装が複雑化する懸念から拒否された。そこで skopeo というツールの開発を始めた。skopeo とはギリシャ語で「remote viewing」という意味だ。
  • CoreOS からも skopeo の機能を使いたいという要望があったが、コマンドラインとしてではなく Go言語ライブラリとして使いたいという要望だった。その結果、skopeo はコマンドラインとライブラリ github.com/containers/image の2つに分離された。このライブラリは現在では Podman, Buldah, CRI-O など多くのコンテナエンジンで使われるようになった。
  • skopeo はコンテナイメージ管理のためのコマンドであり、コンテナの実行は行わない。よって、dockerコマンドやnerdctl を完全置換するものではない。help 上はコンテナイメージビルドの機能も無いように見える。

参考