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

请教一下 docker 大佬,如何给一个正在运行的 docker 容器挂上我宿主机的一块硬盘分区?

  •  
  •   lovejunjie1 · 2019-04-03 11:21:03 +08:00 · 6291 次点击
    这是一个创建于 2069 天前的主题,其中的信息可能已经有所发展或是发生改变。
    详细情况是这样的,最近用 docker 装了一个 nextcloud,默认装完是跟我 ubuntu 系统同一块硬盘的,太小了。

    我想把我一张空的机械硬盘(已经 mount 到了 /mnt/dataStore 上了),挂给 docker 里我 nextcloud 的容器(容器名字叫 mycloud )上。

    于是我看到有-v 的指令。似乎是可以用的。

    所以我先 su root

    准备把 docker 的容器 stop 掉。但是说权限不够,拒绝操作。

    docker kill mycloud 也不行。

    所以求助一下各位大佬,有没有什么办法停掉 docker 的这个容器,让我重新 docker run -v 一下。

    或者在 docker 容器 run 的状态下把硬盘空间挂上去呀 ?
    lovejunjie1
        1
    lovejunjie1  
    OP
       2019-04-03 11:28:25 +08:00
    http://i64.tinypic.com/28rukg.jpg
    补一个截图,这里面有我尝试的命令还有报错信息
    pipixia
        2
    pipixia  
       2019-04-03 11:54:04 +08:00 via Android
    docker rm -f 强制移除
    002jnm
        3
    002jnm  
       2019-04-03 12:08:12 +08:00 via Android
    docker compose
    andylsr
        4
    andylsr  
       2019-04-03 12:12:50 +08:00 via Android
    试一下重启 docker,然后重新 run
    hilbertz
        5
    hilbertz  
       2019-04-03 12:13:55 +08:00
    把 AppArmor 关掉
    momocraft
        6
    momocraft  
       2019-04-03 12:25:15 +08:00
    可以把现在的 container 做成 image (docker commit),重新 run

    你还需要考虑现在的数据怎样转移等问题
    liwufan
        7
    liwufan  
       2019-04-03 12:41:05 +08:00 via iPhone
    apt upgrade 然后重启一下试试
    lovejunjie1
        8
    lovejunjie1  
    OP
       2019-04-03 12:43:24 +08:00
    @pipixia @002jnm @andylsr @hilbertz @momocraft 感谢各位,我先从能保持容器的建议开始尝试一下
    RickyHao
        9
    RickyHao  
       2019-04-03 12:44:26 +08:00 via Android   ❤️ 1
    我记得 docker 好像是不能给已有容器附加 volume 的(也许是我不知道)
    推荐用 nextcloud 的官方镜像,把配置目录、data 目录和一些它推荐挂载的目录挂载出来,然后每次升级只要更新镜像重建容器就行了,配置和数据不会丢。
    [刚好之前写了个教程]( https://rickyhao.com/2019/01/13/使用 docker 快速搭建 nextcloud/)
    lovejunjie1
        10
    lovejunjie1  
    OP
       2019-04-03 12:47:55 +08:00
    @002jnm docker compose 之前有了解过一下。目前知道了文件应该放在哪里,docker compose 也装好了。还不知道如何编,和怎么用……目前还没研究明白
    lovejunjie1
        11
    lovejunjie1  
    OP
       2019-04-03 12:48:54 +08:00
    @RickyHao 噢!!!谢谢大佬,感谢大佬的分享精神。
    shingle
        12
    shingle  
       2019-04-03 13:12:17 +08:00
    如果你之前 docker run 时没有挂载任何数据,你可以先用 docker cp 命令把数据文件夹拷贝到宿主机,具体哪些数据文件夹
    nextcloud 的官方镜像里有说明哪些是持久数据需要挂载的
    https://hub.docker.com/_/nextcloud#persistent-data

    最后可以学习一下 docker-compose 管理,就不用每次改参数重新删除在 run 了
    BlackHole1
        13
    BlackHole1  
       2019-04-03 17:55:33 +08:00 via Android
    直接 docker rm -f 强制删除,重新 run 一个就好
    lovejunjie1
        14
    lovejunjie1  
    OP
       2019-04-03 23:25:02 +08:00
    @hilbertz 感谢提醒,关掉了 apparmor 之后可以正确 stop 和 rm 了


    @BlackHole1 谢谢指导,已经 run 了一个新的了。旧的也成功 rm 掉了


    @shingle 谢谢大佬提供的帮助,我用笨办法实现了我的效果。不过我也觉得有必要学习一下 compose 的用法。感谢感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2642 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:58 · PVG 11:58 · LAX 19:58 · JFK 22:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.