以下是https://docker-curriculum.com/
中给出的示例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:
image: prakhar1989/foodtrucks-web
command: python app.py
depends_on:
- es
ports:
- 5000:5000
volumes:
- ./flask-app:/opt/flask-app
volumes:
esdata1:
driver: local
它说The volumes parameter specifies a mount point in our web container where the code will reside
关于/opt/flask-app
我认为这意味着/opt/flask-app
是一个安装点,它指向主机./flask-app
但是它没有对esdata1
进行任何说明,并且由于主机中没有/opt/flask-app
目录/文件,因此我无法应用与esdata1
相同的解释。< / p>
esdata1
发生了什么?
我的猜测是,这意味着创建一个卷(我能想到的最接近的是磁盘分区)并将其命名为esdata1
并将其安装在/usr/share/elasticsearch/data
上,我是否正确?
答案 0 :(得分:0)
这些有点不同:volumes
和bind mounts
。绑定挂载使您可以指定主机计算机上的文件夹,该文件夹将用作存储。卷(local
驱动程序的租用)在主机上也有文件夹,但是它们的位置由Docker管理,有时很难找到。
在docker-compose.yml
中指定音量时,如果路径以/
或.
开头,则它将变为bind mount
,就像web
服务中一样。否则,如果它是单个动词,则它是volume
,就像es
服务一样。
您可以通过运行docker volume ls
来检查主机上的所有卷。
esdata1发生了什么?我的猜测是,这意味着创造 一个卷(我能想到的最接近的是磁盘分区)和 将其命名为esdata1并将其安装在/ usr / share / elasticsearch / data上,是吗? 对这个猜测正确吗?
完全正确。
我不假装设置规则,但总的来说,volumes
更适合在多个容器之间共享公共数据,例如docker-compose
,而bind mounts
套件更适合从主机到容器共享数据,例如一些服务的初始配置。