如何将文件从主机复制到 Docker 容器?

新手上路,请多包涵

我正在尝试为我们使用的 Docker 容器构建备份和恢复解决方案。

我有我创建的 Docker 基础映像 ubuntu:base ,并且不想每次都使用 Docker 文件重新构建它来添加文件。

我想创建一个从主机运行的脚本,并使用 ubuntu:base Docker 映像创建一个新容器,然后将文件复制到该容器中。

如何将文件从主机复制到容器?

原文由 user3001829 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 483
2 个回答

cp 命令可用于复制文件。

可以将一个特定文件复制到容器中,例如:

 docker cp foo.txt container_id:/foo.txt

可以从容器中复制一个特定文件,例如:

 docker cp container_id:/foo.txt foo.txt

为了强调, container_id容器 ID, 而不是 图像 ID。 (使用 docker ps 查看列表,其中包括 container_id s。)

文件夹 src 包含的多个文件可以使用以下命令复制到 target 文件夹中:

 docker cp src/. container_id:/target
docker cp container_id:/src/. target

参考: cp

在 1.8 之前的 Docker 版本中,只能将文件从容器复制到主机。不是从主机到容器。

原文由 Henrik Sachse 发布,翻译遵循 CC BY-SA 4.0 许可协议

  1. 获取容器名称或短容器 ID:
    $ docker ps

  1. 获取完整的容器 ID:
    $ docker inspect -f   '{{.Id}}'  SHORT_CONTAINER_ID-or-CONTAINER_NAME

  1. 拷贝文件:
    $ sudo cp path-file-host /var/lib/docker/aufs/mnt/FULL_CONTAINER_ID/PATH-NEW-FILE

例子:

 $ docker ps

CONTAINER ID      IMAGE    COMMAND       CREATED      STATUS       PORTS        NAMES

d8e703d7e303   solidleon/ssh:latest      /usr/sbin/sshd -D                      cranky_pare

$ docker inspect -f   '{{.Id}}' cranky_pare

或者

$ docker inspect -f   '{{.Id}}' d8e703d7e303

d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5

$ sudo cp file.txt /var/lib/docker/aufs/mnt/**d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5**/root/file.txt

原文由 solidleon 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题