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

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

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

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

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


cp命令可用于复制文件。 一个特定的文件可以复制,如:

docker cp foo.txt mycontainer:/foo.txt
docker cp mycontainer:/foo.txt foo.txt

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

docker cp src/. mycontainer:/target
docker cp mycontainer:/src/. target

参考: cp Docker CLI文档

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


  • 获取容器名称或短容器标识:

    $ docker ps
    
  • 获取完整的容器ID:

    $ docker inspect -f   '{{.Id}}'  SHORT_CONTAINER_ID-or-CONTAINER_NAME
    
  • 复制文件:

    $ 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
    

    最简洁的方法是在运行命令之前在容器上安装主机目录:

    {host} docker run -v /path/to/hostdir:/mnt --name my_container my_image
    {host} docker exec -it my_container bash
    {container} cp /mnt/sourcefile /path/to/destfile
    
    链接地址: http://www.djcxy.com/p/3009.html

    上一篇: Copying files from host to Docker container

    下一篇: Copying files from Docker container to host