V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jmyz0455
V2EX  ›  程序员

Docker Compose 如何迁移启动目录

  •  
  •   jmyz0455 · 2019-02-14 09:31:25 +08:00 · 3626 次点击
    这是一个创建于 2105 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在 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... 也没有看到什么头绪。难道是我想得太复杂了?

    14 条回复    2019-02-15 16:54:51 +08:00
    zbinlin
        1
    zbinlin  
       2019-02-14 09:45:30 +08:00
    这看你的 docker-compose.yml 有没有配置写死了路径的,如果没有,可以先 `docker-compose down` 停掉,然后直接把 docker-compose.yml 复制到 b 目录就可以了。如果 a 目录里还有其他文件(夹)需要用到的了,也一同复制过去。
    liuyibao
        2
    liuyibao  
       2019-02-14 09:46:07 +08:00
    楼上正解,试下就知道了。
    jmyz0455
        3
    jmyz0455  
    OP
       2019-02-14 09:52:39 +08:00
    @zbinlin 我的 .yml 是来自网上的教程,看上去没有写固定的路径,麻烦您检查下?
    jmyz0455
        4
    jmyz0455  
    OP
       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
        5
    AngryPanda  
       2019-02-14 09:59:34 +08:00
    怕丢数据,操作前先备份。
    jmyz0455
        6
    jmyz0455  
    OP
       2019-02-14 10:01:17 +08:00
    @liuyibao @liuyibao docker-compose down 之后用 docker-compose start 启动就可以吗,数据都会还在吧?
    jmyz0455
        7
    jmyz0455  
    OP
       2019-02-14 10:06:51 +08:00
    @AngryPanda 请教一下,docker save 和 docker export 命令都是无法备份到数据的吧?只是备份了镜像和容器。
    whileFalse
        8
    whileFalse  
       2019-02-14 10:11:21 +08:00
    建议先把数据导出来。
    zbinlin
        9
    zbinlin  
       2019-02-14 10:17:46 +08:00
    从你给的链接来看,你的数据在 /docker/nextcloud 目录,备份好这个目录就可以了。
    okchum
        10
    okchum  
       2019-02-14 10:20:41 +08:00
    @zbinlin 9 楼说得对。
    zbinlin
        11
    zbinlin  
       2019-02-14 10:36:32 +08:00
    楼主检查下 `/docker/nextcloud` 下各目录是否有数据,我发现你用的 wonderfall/nextcloud 与官方的 nextcloud 在配置目录上有点区别。
    jmyz0455
        12
    jmyz0455  
    OP
       2019-02-14 16:28:48 +08:00
    @whileFalse @zbinlin @okchum @zbinlin
    我以为数据是挂载在容器里,原来是写在宿主环境上啊,看来我对 docker 理解太浅薄了已经备份好,谢谢各位。
    还有一个小问题,请问管理多个 Docker Compose 是不是建立多个目录,然后各个目录放入单独一个 docker-compose.yml 来管理?还是说用一份 docker-compose.yml 把所有 Compose 都写上?
    HaroldChen
        13
    HaroldChen  
       2019-02-14 18:29:32 +08:00
    @jmyz0455 一般 docker-compose.yml 是根据服务一对一的,分别建目录管理。
    jmyz0455
        14
    jmyz0455  
    OP
       2019-02-15 16:54:51 +08:00 via iPhone
    @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 文件恢复回去是没有用的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1216 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:24 · PVG 02:24 · LAX 10:24 · JFK 13:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.