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