Docker Compose 如何迁移启动目录

2019-02-14 09:31:25 +08:00
 jmyz0455

我在 a 目录下有一个 docker-compose.yml 文件,然后我用 docker-compose up 启动了该容器,然后我想把该 Docker Compose 迁移到 b 目录下管理,我应该怎样操作呢?

本人初学 Docker,不是很理解 Docker Compose 原理,因为这个 docker-compose 项目里面有重要的数据,所以我怕迁移过程中会出现数据丢失。当我搜索 “ Docker Compose 迁移 ” 字眼时,基本都是教 docker save 和 docker export 备份镜像和容器,没有教怎么迁移 Docker Compose 项目。然而在看文章的时候又提到了容器卷这个概念,指数据卷又独立于镜像和容器之外,有自己的生命周期,需要在恢复备份的容器之后再另外进行挂载备份的数据卷。可能我的理解不是很正确,迁移 Docker Compose 项目需要如此大费周章的吗?

我只是在本机里操作,给 docker-compose 换一个目录而已,但是网上确实搜不到相关教程,单纯移动 docker-compose.yml 文件肯定是没用的,官网的文档 https://docs.docker.com/compo... 也没有看到什么头绪。难道是我想得太复杂了?

3628 次点击
所在节点    程序员
14 条回复
zbinlin
2019-02-14 09:45:30 +08:00
这看你的 docker-compose.yml 有没有配置写死了路径的,如果没有,可以先 `docker-compose down` 停掉,然后直接把 docker-compose.yml 复制到 b 目录就可以了。如果 a 目录里还有其他文件(夹)需要用到的了,也一同复制过去。
liuyibao
2019-02-14 09:46:07 +08:00
楼上正解,试下就知道了。
jmyz0455
2019-02-14 09:52:39 +08:00
@zbinlin 我的 .yml 是来自网上的教程,看上去没有写固定的路径,麻烦您检查下?
jmyz0455
2019-02-14 09:53:47 +08:00
@zbinlin https://blog.wangriyu.wang/2018/05-server-nextcloud.html
我其实就是怕数据丢失了,不是很敢做这一步而已。
docker-compose down 之后 mv .yml 再 docker-compose start 启动就可以了吧?
AngryPanda
2019-02-14 09:59:34 +08:00
怕丢数据,操作前先备份。
jmyz0455
2019-02-14 10:01:17 +08:00
@liuyibao @liuyibao docker-compose down 之后用 docker-compose start 启动就可以吗,数据都会还在吧?
jmyz0455
2019-02-14 10:06:51 +08:00
@AngryPanda 请教一下,docker save 和 docker export 命令都是无法备份到数据的吧?只是备份了镜像和容器。
whileFalse
2019-02-14 10:11:21 +08:00
建议先把数据导出来。
zbinlin
2019-02-14 10:17:46 +08:00
从你给的链接来看,你的数据在 /docker/nextcloud 目录,备份好这个目录就可以了。
okchum
2019-02-14 10:20:41 +08:00
@zbinlin 9 楼说得对。
zbinlin
2019-02-14 10:36:32 +08:00
楼主检查下 `/docker/nextcloud` 下各目录是否有数据,我发现你用的 wonderfall/nextcloud 与官方的 nextcloud 在配置目录上有点区别。
jmyz0455
2019-02-14 16:28:48 +08:00
@whileFalse @zbinlin @okchum @zbinlin
我以为数据是挂载在容器里,原来是写在宿主环境上啊,看来我对 docker 理解太浅薄了已经备份好,谢谢各位。
还有一个小问题,请问管理多个 Docker Compose 是不是建立多个目录,然后各个目录放入单独一个 docker-compose.yml 来管理?还是说用一份 docker-compose.yml 把所有 Compose 都写上?
HaroldChen
2019-02-14 18:29:32 +08:00
@jmyz0455 一般 docker-compose.yml 是根据服务一对一的,分别建目录管理。
jmyz0455
2019-02-15 16:54:51 +08:00
@HaroldChen 那我想问一下如果是误操作,比如我在 a 目录里,只有一个 docker-compose.yml ,并且已经执行过 docker-compose up 了,不小心手动删掉了这个 docker-compose.yml ,结果在 a 目录里无法执行 docker-compose 命令了,提示找不到 docker-compose.yml ,docker-compose ps 和 docker-compose images 都显示为空,那怎么办呢?

如何在 a 目录里重建对原有 Docker Compose 项目的管理?我手动把 docker-compose.yml 文件恢复回去是没有用的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/534762

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX