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

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

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

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


当前回答

要在容器和本地文件系统之间复制文件/文件夹,请键入以下命令:

docker cp {SOURCE_FILE} {DESTINATION_CONTAINER_ID}:/{DESTINATION_PATH}

例如

docker cp /home/foo container-id:/home/dir

要获取contaner id,请键入给定的命令:

docker ps

以上内容摘自docker.com。

其他回答

在容器外部使用以下命令,我可以将文件从主机复制到容器。

 487b00c94dd4 = Container ID
D:\demo\demo.tar= Source Url
/myfolder= Container Url

 
docker cp "D:\demo\demo.tar" 487b00c94dd4:/myfolder

这就是对我有用的

#Run the docker image in detached mode 
$docker run -it -d test:latest bash

$ docker ps
CONTAINER ID        IMAGE               COMMAND
a6c1ff6348f4        test:latest     "bash"

#Copy file from host to container
sudo docker cp file.txt a6c1ff6348f4:/tmp

#Copy the file from container to host
docker cp test:/tmp/file.txt /home

以下是一种相当丑陋的方法,但它确实有效。

docker run -i ubuntu /bin/bash -c 'cat > file' < file

有一件事我试过了

启动docker容器后,如果在该容器下创建任何文件;您可以从docker主机的以下位置轻松访问该文件:-

cd/var/lib/dodocker/aufs/container/container_id/tmp

再试一次!

在我看来,您不必复制图像中的文件,但可以对文件使用GIT或SVN,然后设置与本地文件夹同步的卷。在运行容器时使用脚本,如果不从GIT存储库复制数据,则可以检查本地文件夹中是否已存在数据。这使你的形象非常轻盈。