Docker,是否可以将主机数据复制到Docker卷?

时间:2019-12-30 13:01:24

标签: docker elasticsearch

目前,我正在使用主机目录作为弹性搜索数据(/ var / lib / elasticsearch:/ usr / share / elasticsearch / data)的安装点(?)

 version: '3'

 services:
  elasticsearch:
   build:
     context: .
     dockerfile: ./compose/elasticsearch/Dockerfile
     args:
       - VERSION=${VERSION}
       - ELASTICSEARCH_PORT=${ELASTICSEARCH_PORT}
       - MEM=${MEM}
       - CLUSTER_NAME=${CLUSTER_NAME}
       - ENV=${ENV}
   container_name: elasticsearch
   network_mode: host
   environment:
     - discovery.type=single-node
   volumes:
    - /var/lib/elasticsearch:/usr/share/elasticsearch/data

我想按以下方式使用docker的卷。

是否可以将/var/lib/elasticsearch中的数据移动到data:

 services:
  elasticsearch:
   build:
     context: .
     dockerfile: ./compose/elasticsearch/Dockerfile
     args:
       - VERSION=${VERSION}
       - ELASTICSEARCH_PORT=${ELASTICSEARCH_PORT}
       - MEM=${MEM}
       - CLUSTER_NAME=${CLUSTER_NAME}
       - ENV=${ENV}
   container_name: elasticsearch
   network_mode: host
   environment:
     - discovery.type=single-node
   volumes:
     - data:/usr/share/elasticsearch/data

  volumes:
    data:

1 个答案:

答案 0 :(得分:0)

一旦创建了新容器并装入了docker cp卷,您就可以使用data命令从主机复制文件。

docker cp /var/lib/elasticsearch/. elasticsearch:/usr/share/elasticsearch/data/

如果要在启动Elasticsearch容器之前显示数据,还可以在启动Elasticsearch容器之前创建一个虚拟容器。如果您使用docker-compose通过在项目名称前添加docker-compose命名空间来启动弹性搜索,则此方法将无效。

docker container create --name dummy -v data:/root hello-world
docker cp /var/lib/elasticsearch/. dummy:/root/`
docker rm dummy