将数据从主机加载到docker容器,并在退出时写回主机。在主机和容器之间加载和持久化数据

将数据从主机加载到docker容器,并在退出时写回主机。在主机和容器之间加载和持久化数据,docker,containers,volume,mount,persist,Docker,Containers,Volume,Mount,Persist,我的要求是使用主机目录中的数据创建docker映像。当我运行容器时,容器中生成的数据必须复制回主机目录。简单地说,就是数据持久性 #!/bin/bash #start container sudo docker start mycontainer && > /dev/null #copy data on exit sudo docker cp mycontainer:/etc/container/data/location/. `pwd`/host/data/locat

我的要求是使用主机目录中的数据创建docker映像。当我运行容器时,容器中生成的数据必须复制回主机目录。简单地说,就是数据持久性

#!/bin/bash
#start container
sudo docker start mycontainer && > /dev/null

#copy data on exit 
sudo docker cp mycontainer:/etc/container/data/location/. `pwd`/host/data/location/ && > /dev/null
以下是我如何构建和运行容器(工作原理):

Docker build&create,使用主机位置中的数据启动容器(一切正常)

启动容器并将数据复制回主机进行持久化

#!/bin/bash
#start container
sudo docker start mycontainer && > /dev/null

#copy data on exit 
sudo docker cp mycontainer:/etc/container/data/location/. `pwd`/host/data/location/ && > /dev/null
我知道最好的方法是装载卷,但将数据从容器复制回主机时失败了。我想摆脱复制步骤

应该行得通,

docker create -p 8080:8080 -v /host/data/location:/etc/container/data/location --name mycontainer myimage:latest 

但事实并非如此!有人能告诉我原因吗?

只要将卷装载到主机上的可写目录中,就可以保存在该装载点写入容器中的所有数据。绑定装载可以使用
docker run
命令,但不能使用
docker create
,是吗?在创建过程中不绑定装载。您需要在dockerile中从构建上下文添加/复制到容器中。谢谢。对这就是我正在做的。在构建容器步骤中添加/复制内容。然后在运行步骤中装入bindmount。