我在 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... 也没有看到什么头绪。难道是我想得太复杂了?
1
zbinlin 2019-02-14 09:45:30 +08:00
这看你的 docker-compose.yml 有没有配置写死了路径的,如果没有,可以先 `docker-compose down` 停掉,然后直接把 docker-compose.yml 复制到 b 目录就可以了。如果 a 目录里还有其他文件(夹)需要用到的了,也一同复制过去。
|
2
liuyibao 2019-02-14 09:46:07 +08:00
楼上正解,试下就知道了。
|
4
jmyz0455 OP @zbinlin https://blog.wangriyu.wang/2018/05-server-nextcloud.html
我其实就是怕数据丢失了,不是很敢做这一步而已。 docker-compose down 之后 mv .yml 再 docker-compose start 启动就可以了吧? |
5
AngryPanda 2019-02-14 09:59:34 +08:00
怕丢数据,操作前先备份。
|
6
jmyz0455 OP |
7
jmyz0455 OP @AngryPanda 请教一下,docker save 和 docker export 命令都是无法备份到数据的吧?只是备份了镜像和容器。
|
8
whileFalse 2019-02-14 10:11:21 +08:00
建议先把数据导出来。
|
9
zbinlin 2019-02-14 10:17:46 +08:00
从你给的链接来看,你的数据在 /docker/nextcloud 目录,备份好这个目录就可以了。
|
11
zbinlin 2019-02-14 10:36:32 +08:00
楼主检查下 `/docker/nextcloud` 下各目录是否有数据,我发现你用的 wonderfall/nextcloud 与官方的 nextcloud 在配置目录上有点区别。
|
12
jmyz0455 OP @whileFalse @zbinlin @okchum @zbinlin
我以为数据是挂载在容器里,原来是写在宿主环境上啊,看来我对 docker 理解太浅薄了已经备份好,谢谢各位。 还有一个小问题,请问管理多个 Docker Compose 是不是建立多个目录,然后各个目录放入单独一个 docker-compose.yml 来管理?还是说用一份 docker-compose.yml 把所有 Compose 都写上? |
13
HaroldChen 2019-02-14 18:29:32 +08:00
@jmyz0455 一般 docker-compose.yml 是根据服务一对一的,分别建目录管理。
|
14
jmyz0455 OP @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 文件恢复回去是没有用的。 |