AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 750868
Accepted
dukeofgaming
dukeofgaming
Asked: 2016-01-22 11:57:31 +0800 CST2016-01-22 11:57:31 +0800 CST 2016-01-22 11:57:31 +0800 CST

如何在 docker 卷容器和 docker 卷之间做出决定?

  • 772

阅读文档后,我发现自己对如何最好地管理生产应用程序/服务数据感到有些困惑。

似乎有3个选项:

  1. 只需将卷映射到主机目录(即-v参数docker run)
  2. 为数据创建一个 docker 容器镜像(即单独的容器和--volumes-from)
  3. 创建一个 docker 卷(即docker volume create)

现在,似乎公认的做法是选项#2,但后来我想知道#3 的目的是什么。

尤其是您如何正确处理这些场景,docker volume在每种情况下使用数据卷容器还是更好?

  • 您需要服务器中单独的卷和/或存储层中的应用程序数据
  • 备份
  • 恢复数据
storage
  • 2 2 个回答
  • 14228 Views

2 个回答

  • Voted
  1. Quinn Comendant
    2016-02-28T12:46:58+08:002016-02-28T12:46:58+08:00

    从 Docker 1.9 开始,使用Volumes API ( docker volume create --name mydata) 创建命名卷优于数据卷容器。截至 2016 年 2 月,Docker卷文档已严重过时。Docker 的人自己建议数据卷容器“不再被认为是推荐的模式”、“命名卷应该能够在大多数(如果不是全部)情况下替换仅数据卷”和“我看不出有什么理由使用仅数据容器。”

    • 22
  2. Best Answer
    Andy Shinn
    2016-01-24T14:31:05+08:002016-01-24T14:31:05+08:00

    我认为#2 和#3 几乎是一回事,主要区别在于#3 没有停止的容器(字面意思是,只是一个命名卷)。例如,您可以创建一个命名卷并执行与 #2 类似的操作-v。

    创建命名卷:

    $ docker volume create --name test
    

    从容器挂载一些数据并将其写入该卷:

    $ docker run -v test:/opt/test alpine touch /opt/test/hello
    

    然后,您可以将相同test的卷挂载到另一个容器中并读取数据:

    $ docker run -v test:/opt/test alpine ls -al /opt/test     
    total 8
    drwxr-xr-x    2 root     root          4096 Jan 23 22:28 .
    drwxr-xr-x    3 root     root          4096 Jan 23 22:29 ..
    -rw-r--r--    1 root     root             0 Jan 23 22:28 hello
    

    此处的优点是,如果您删除仅数据容器,该卷不会意外消失。您现在使用docker volume子命令对其进行管理。

    $ d volume ls
    DRIVER              VOLUME NAME
    local               test
    

    它还为将来的卷驱动程序打开了可能性,因此您可以在主机之间进行共享卷(即 NFS 上的命名卷)。这方面的例子可能是Flocker和Convoy。具体到您关于移动或备份数据的观点,Convoy 具有用于备份数据的特定子命令,并允许在您的主机外部的 NFS 或 EBS 上进行存储。

    出于这个原因,我认为更新的方式(Docker 1.9+)是使用命名卷而不是纯数据容器。

    • 18

相关问题

  • 初学者 SAS 和服务器问题

  • Amazon S3 存储如何计费?[关闭]

  • 轻松的网络存储和文件访问灵魂[关闭]

  • 无限存储

  • 在托管环境中,用户 PC 是否应该有本地外部 HD 备份?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve