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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容