容器是很好的工具,可以封装应用程序及其依赖项,允许应用程序以简化的方式在任何地方运行。一些容器镜像包含启动长期二进制文件的命令,而其他容器镜像可能只包含需要在环境中可用的数据(例如,Kubernetes 集群)。例如,operator-framework bundle和crossplane 包都使用容器镜像来存储 Kubernetes 清单。这些清单在集群上解包并提供给最终用户。
使用容器映像存储数据的缺点之一是它们必然是不透明的。没有办法快速判断图像中的内容,尽管散列摘要有助于查看图像是否与以前的版本相比发生了变化。选项是使用docker cp或类似的使用 podman 或 containerd。
单独使用docker cp可能很麻烦。假设您在注册表的某处有一个远程图像。您必须提取映像,从该映像创建一个容器,然后才能docker cp
dcp是一个试图简化此工作流程的简单二进制文件。用户可以简单地说dcp
如果你是 Rust 程序员并且在本地安装了 Rust,你可以通过简单地输入 dcp 来安装 dcp cargo install dcp,它将从 crates.io 获取最新版本。
发布部分有许多针对不同平台的 dcp 预编译版本。目前只有 Linux 和 MacOS 是预构建的。对于 MacOS,提供了 arm 和 x86 目标,而对于 Linux,仅提供 x86。如果您的系统不受支持,从源代码构建 dcp 很简单。
要从源代码构建,请确保您在本地安装了 rust 工具链。本项目不依赖 nightly,使用 1.62-stable 工具链。克隆存储库并运行cargo build --release以构建二进制文件的发布版本。从那里,您可以将二进制文件移动到 $PATH 上的文件夹以轻松访问它。
containerd因为在撰写本文时,Rust 中没有合适的客户端实现,所以dcp依赖于外部 docker 和 podman crates 提供的 API。这仅限dcp于在 docker 或 podman 是容器运行时的系统上工作。
默认情况下,dcp将在标准路径上查找要连接的活动 docker 套接字。如果 docker 套接字不可用,dcp将基于 $XDG_RUNTIME_DIR 环境变量回退到当前用户的 podman 套接字。
默认情况下,dcp 会将内容复制到当前目录.。例如,让我们尝试发出以下命令:
$ dcp tyslaton/sample-catalog:v0.0.4 -c configs
此命令会将configs目录(通过c标志指定)从图像复制到当前目录。
对于进一步的配置,让我们尝试:
$ dcp tyslaton/sample-catalog:v0.0.4 -d output -c configs
此命令拉下请求的图像,仅提取configs目录并将其复制到output本地目录(通过-d标志指定)。
另一个示例,仅复制清单目录:
$ dcp quay.io/tflannag/bundles:resolveset-v0.0.2 -c manifests
最后,我们可以通过提供用户名和密码(通过-uand-p标志指定)来引用私有注册表。
$ dcp quay.io/tyslaton/sample-catalog-private:latest -u -p
注意:这是连接到私有注册表的便捷方式,但在本地不安全,因为您的凭据保存在 shell 的历史记录中。如果您想保持完全安全,请通过登录
如果你想运行测试套件,你只需要运行标准的 cargo 命令。这将运行所有相关的单元、集成和文档测试。
$ cargo test | 留言与评论(共有 0 条评论) “” |