コンテナ管理コマンド 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 上はコンテナイメージビルドの機能も無いように見える。