You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅使用Containerd的ctr命令将主机文件复制到容器中

如何将主机文件复制到通过Containerd的ctr命令启动的容器中

本次测试使用的是镜像docker.io/bitnami/apache:latest,由于它是rootless容器,操作难度大幅提升——比如在运行的容器中安装curl即便可行也十分繁琐。我正在尝试找出如何将主机文件复制到这个通过Containerd的ctr命令启动的容器中。

ctr的文档十分匮乏,以下是我仅使用ctr命令启动容器并尝试以root身份连接的操作步骤:

ctr image pull docker.io/bitnami/apache:latest
ctr container create -t docker.io/bitnami/apache:latest bitnamiap
ctr containers ls # 检查容器是否创建完成
ctr task start -d bitnamiap # 启动容器
ctr -n default task ls # 检查容器是否运行
executor_id="bitnamiap" 

# 以root身份连接,但作用有限
ctr -n default tasks exec --tty --exec-id test1 --user=0 $executor_id bash 

我尝试使用快照挂载容器,但仅能读取容器内文件,无法写入。这是设计特性而非rootless容器的问题,相关技术讨论也证实此挂载是单向的。操作命令如下:

mkdir -p /tmp/ctrtransfer
ctr -n default snapshot mounts /tmp/ctrtransfer "$executor_id" | sh

不过我推测,如果ctr无法直接实现文件复制,或许可以通过处理ctr snapshot mount的输出来访问容器的写入层,完成文件复制。

注意事项:

  • 曾尝试docker cp,但在该场景下无效;本次需求是尽可能仅使用containerd和runc工具实现
  • 未尝试nerdctl,这并非本次目标;不过若有人能解释nerdctl的底层实现方式也可
  • 可以使用nsenter或网络工具将文件传入容器,但我更希望通过挂载或ctr API理解containerd的内部工作原理来实现,掌握本地可用的工具是十分实用的内容

内容的提问来源于stack exchange,提问作者creatldd1 creatldd1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 02:55:11