如何停止/重新启动docker容器而不丢失更改?
我执行了以下操作,并丢失了Docker容器中所有更改的数据如何停止/重新启动docker容器而不丢失更改?,docker,docker-image,Docker,Docker Image,我执行了以下操作,并丢失了Docker容器中所有更改的数据 docker build-t. docker run*-p 8080:80*--name docker exec(导入并处理一些文件,启动服务器托管它们) 然后我想在另一个端口上运行它装卸工停止和装卸工运行不工作。相反,我做到了 docker站 docker rm docker run(参数与前面相同) 重启后,我看到容器中1-3处发生的更改消失了,必须重新运行导入 下次如何正确执行此操作?每次执行docker运行时,它都会根据您的图像
docker build-t.
docker run*-p 8080:80*--name
docker exec
(导入并处理一些文件,启动服务器托管它们)装卸工运行
不工作。相反,我做到了
docker站
docker rm
docker run
(参数与前面相同)下次如何正确执行此操作?每次执行
docker运行时,它都会根据您的图像旋转一个新容器。一旦容器启动,docker允许您通过docker update
更改的内容就很少了。因此,您应该将数据保存在需要在容器实例之间持久化的外部卷中。例如
docker run -p 8080:80 -v app-data:/data --name <container_name> <name:tag>
docker run-p 8080:80-v app data:/data--name
可以根据您自己的要求更改容器中的卷名(应用程序数据)和装入点(/data)。然后,当您销毁并重新启动一个新容器时,您可以在新容器中装载相同的卷。您需要做的是从更改后刚刚停止的容器中构建映像。因为您的旧命令仍然使用旧映像,而旧映像没有新的更改(您在刚刚停止的容器中进行了更改,而不是在映像中)
docker提交-一个新的\u nginx myrepo/nginx:latest
然后,您可以使用刚刚构建的新映像启动容器
但是如果您不想使用所做的更改创建映像(比如您不想在映像中放入包含密码的配置),您可以使用卷装载
docker run-d-p--name web-v/src/webapp:/webapp training/webapp python app.py
此命令将主机目录/src/webapp装载到位于/webapp的容器中。如果路径/webapp已经存在于容器的映像中,/src/webapp装载覆盖但不删除预先存在的内容。卸下装载后,即可再次访问内容。这与mount命令的预期行为一致
docker commit --help
Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Create a new image from a container's changes