docker - Docker,是否可以将主机的数据复制到 docker 卷?
问题描述
目前我正在使用主机的目录作为弹性搜索数据的挂载点(?)(/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:
解决方案
创建挂载卷的新容器后,您可以使用docker cp
命令从主机复制文件。data
docker cp /var/lib/elasticsearch/. elasticsearch:/usr/share/elasticsearch/data/
您还可以在启动 elasticsearch 容器之前创建一个虚拟容器,以防您希望在启动 elasticsearch 容器之前存在数据。如果您使用 docker-compose 启动 elasticsearch,这将不起作用,因为 docker-compose 通过预先挂起项目名称来命名卷。
docker container create --name dummy -v data:/root hello-world
docker cp /var/lib/elasticsearch/. dummy:/root/`
docker rm dummy
推荐阅读
- android - 在 Google Play 控制台中找不到定时发布按钮
- node.js - nodejs中的Mongodb内部联接查询
- python - 在 Python 字典键中提取日期,其中键的类型为 np.datetime64
- php - 如何在 WooCommerce 中创建有效的自定义产品查询?
- python - tensorflow 2.1.0 的安装错误
- progressive-web-apps - 异步模块定义和渐进式 Web 应用程序之间有什么关系?
- python - 如何从python中的两个单独的文本文件中提取基于子字符串的行?
- javascript - 无法从从 Promise 获得的对象中检索值
- asp.net-core - 在 F# 中使用“IHttpClientFactory”的常规方法是什么?
- makefile - 是否预期 bitbake 立即分配行为?