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
。
关于这项新功能的文档仍然不多。我在问:
- 我们可以用命名容器替换 DOC 吗?音量持续多长时间?如果我删除正在使用它的容器会怎样?
- 我们怎样才能立即备份?以前,我可以
docker run --rm --volumes-from es-data ...
然后 tar
它。
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 -v
或 docker 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
.
直到 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
。
关于这项新功能的文档仍然不多。我在问:
- 我们可以用命名容器替换 DOC 吗?音量持续多长时间?如果我删除正在使用它的容器会怎样?
- 我们怎样才能立即备份?以前,我可以
docker run --rm --volumes-from es-data ...
然后tar
它。
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 -v
或 docker 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
.