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

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

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

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


当前回答

docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH

目标路径必须预先存在

其他回答

将文件复制到我找到的容器的最佳方法是使用dockerrun命令的-v选项在主机上安装目录。

获取容器名称或短容器id:$docker ps获取完整容器id:$docker inspect-f“{{.Id}}”SHORT_CONTAINER_Id或CONTAINER_NAME复制文件:$sudo cp路径文件host/var/lib/docker/aufs/mnt/FUL_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

or

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

d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5

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

我通常使用以下命令创建python服务器

python-m SimpleHTTPServer

然后使用wget将文件传输到docker中所需的位置。我知道这不是最好的方法,但我发现这要容易得多。

这是一个联机程序,用于在运行tomcat容器时复制单个文件。

docker run -v /PATH_TO_WAR/sample.war:/usr/local/tomcat/webapps/myapp.war -it -p 8080:8080 tomcat

这将把war文件复制到webapps目录,让你的应用程序立即运行。

我刚刚开始使用docker来编译VLC,下面是您可以从容器来回复制文件的方法:

su -
cd /var/lib/docker
ls -palR > /home/user/dockerfilelist.txt

在这个txt中搜索一个熟悉的文件,你会得到文件夹,cd作为根目录,瞧!复制所有你想要的。

可能有一个包含“merged”的路径,我猜你想要的是包含“diff”的路径。

此外,如果您退出容器并想回到之前的位置:

docker ps -a
docker start -i containerid

我想这很有用,因为你没有用这样的命令命名任何东西

docker run -it registry.videolan.org:5000/vlc-debian-win64 /bin/bash

当然是黑客的方法,但那又怎么样!