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

【docker容器共享宿主机文件-elasticsearch示范】其中volumes属性就是配置宿主机指定目录挂载到容器指定目录的配置,可以配置多个目录,:号前面是宿主机的目录,后面是容器的目录。privileged属性必须配置为true,否则就不能存取指定的目录。
配置生效 首次启动docker容器执行命令docker-compose up即可,如果修改了docker-compose.yml配置文件,则必须先停止容器,然后再次启动方可生效。即:先执行docker-compose stop,再执行docker-compose up

    推荐阅读