官方Docker初学者教程上的Docker卷与持久卷

时间:2018-09-24 09:20:12

标签: docker

该教程位于docker-curriculum

在本教程的docker-compose.yml中,我无法理解卷之间的区别:

version: "3"
services:
  es:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
    container_name: es
    environment:
      - discovery.type=single-node
    ports:
      - 9200:9200
    volumes:
      - esdata1:/usr/share/elasticsearch/data
  web:
    build: . # replaced image with build
    command: python app.py
    environment:
      - DEBUG=True  # set an env var for flask
    depends_on:
      - es
    ports:
      - "5000:5000"
    volumes:
      - ./flask-app:/opt/flask-app
volumes:
    esdata1:
      driver: local

volumes下有web,在es下是esdata1:,下面是driver: local。我的新手理解webes下的那些内容是将外部数据装载到每个容器中的目录中。然后最后一个volume将永久卷放在主机上,即使容器被杀死,该卷也将存在于该主机上。在这种情况下,将esdata1:个数据保留下来。我的下一个问题是driver: local是什么意思?

1 个答案:

答案 0 :(得分:0)

我刚刚收到一位导师的建议,是的,我的猜测部分正确,因为Docker将在/var/lib/docker/volumes创建一个目录,并且该目录可以挂载到容器中。该持久卷成为容器内进程数据的存放位置,即MySQL,ElasticSearch等被永久存储。  (我猜,直到您杀死了,使用-v选项删除所有内容……只是一个猜测)。 web下的卷是程序员创建的目录,即。包含app.py的相同子目录已安装在容器中,允许即时重写app.py,即。在本地计算机上进行的任何更改都会反映在容器中。
作为容器和Docker的新手,尽管学习曲线对我而言有些陡峭,但这一切都非常有效。请参阅上面的评论,并带有指向另一个问题的链接,以回答第二个问题。