docker容器共享宿主机文件-elasticsearch示范

docker是运行微服务的很好容器,但是往往微服务要读写大量数据,这些数据如果和应用一起存放到容器里边,则容器迁移、配置修改、故障等就可能导致数据丢失,所以,最好将数据和应用独立,应用以镜像的方式部署到容器里边,数据通过宿主机目录共享的方式挂载到容器里边,不过网上提供的很多资料只是说了如何共享,但是实践发现这个共享后,往往不能正常存取。通过日志分析发现是权限问题,这里就将如何配置详细说明,避免后来者走弯路。

docker-compose的方式实现

本文以elasticsearch搜索引擎docker部署为例,docker-compose.yml示例文件如下:

  #启动elasticsearch搜索服务
version: "2"
services:
  es:
    restart: always
    image: docker.io/elasticsearch:6.5.0
    ports:
      - "9200:9200"
      - "9300:9300"
    network_mode: host
    volumes:
      - /home/mole/data:/usr/share/elasticsearch/data
      - /home/mole/plugins:/usr/share/elasticsearch/plugins
    environment:
      - ES_JAVA_OPTS=-Xms4g -Xmx4g
    privileged: true

其中volumes属性就是配置宿主机指定目录挂载到容器指定目录的配置,可以配置多个目录,:号前面是宿主机的目录,后面是容器的目录。privileged属性必须配置为true,否则就不能存取指定的目录。

配置生效

首次启动docker容器执行命令docker-compose up即可,如果修改了docker-compose.yml配置文件,则必须先停止容器,然后再次启动方可生效。即:先执行docker-compose stop,再执行docker-compose up

你可能感兴趣的:(docker容器共享宿主机文件-elasticsearch示范)