Docker 命名卷与 DOC(仅数据容器)

Docker named volumes vs DOC (data-only-containers)

直到 Docker (v1.10) 的最新版本,我们被认为可以使用 DOC:data-only 容器。所以我会创建这样的 DOC(基于例如 busybox)并使用 --volumes-from 到 link 它到我的容器。您仍然可以在 Docker documentation.

中阅读相关内容

对于新版本的 docker,据说我们应该使用 named volumes 而不是 DOC。这是 docker-compose.yml 的示例:

version: '2'    
services:
  elasticsearch:
    image: elasticsearch:2.2.0
    command: elasticsearch -Des.network.host=0.0.0.0
    ports:
      - "9201:9200"
    volumes:
      - "es-data:/usr/share/elasticsearch/data"

volumes:    
  es-data:

这里我们创建并使用命名卷es-data

关于这项新功能的文档仍然不多。我在问:

Can we replace DOC with named containers?

在很多情况下,是的,命名容器将是更好的选择。

How long volume is persisted? What if I remove the container that is using it?

如果您移除容器,卷仍会存在。删除卷的唯一方法是使用 docker-compose down -vdocker volume rm <volume name>.

How can we e.g. backup now? Previously, I could docker run --rm --volumes-from es-data ... and then tar it.

代替--volumes-from,您可以使用--volume=<volume name>

请注意,由 docker-compose 创建的卷总是以项目名称为前缀,因此如果您将它与 docker 命令一起使用,全名实际上是 <project_name>_es-data.