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

igr*_*igr 20 docker docker-compose

直到最近版本的Docker(v1.10),我们认为我们可以使用DOC:仅数据容器.所以我会创建这样的DOC(基于例如busybox)并用--volumes-from它将它链接到我的容器.您仍然可以在Docker文档中阅读此内容.

对于新版本的docker,我们应该使用而不是DOC named volumes.这是一个例子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:
Run Code Online (Sandbox Code Playgroud)

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

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

  • 我们可以用命名容器替换DOC吗?音量持续多长时间?如果我删除正在使用它的容器怎么办?
  • 我们怎样才能备份呢?以前,我可以docker run --rm --volumes-from es-data ...,然后tar它.

dne*_*hin 17

我们可以用命名容器替换DOC吗?

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

音量持续多长时间?如果我删除正在使用它的容器怎么办?

如果您卸下容器,卷仍将在那里.删除卷的唯一方法是使用docker-compose down -v或docker volume rm <volume name>.

我们怎样才能备份呢?以前,我可以从es-data中运行--rm --volumes - 然后tar它.

而不是--volumes-from,你可以使用--volume=<volume name>.

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

  • compose支持挂载[external](https://docs.docker.com/compose/compose-file/#external)卷,在这种情况下没有前缀 (3认同)