我正在通过volumes_fromdocker compose中的选项。显然,您可以从容器或服务导入卷。从docker compose文档中是:
volumes_from
volume_from 从另一个服务或容器挂载所有卷,可以选择指定只读访问(ro)或读写(rw)。 volumes_from: - service_name - service_name:ro - container:container_name - container:container_name:rw 注意:仅版本2文件格式支持container:…格式。在版本1中,您可以使用容器名称而无需将其标记为: - service_name - service_name:ro - container_name - container_name:rw
volume_from
从另一个服务或容器挂载所有卷,可以选择指定只读访问(ro)或读写(rw)。
volumes_from: - service_name - service_name:ro - container:container_name - container:container_name:rw
注意:仅版本2文件格式支持container:…格式。在版本1中,您可以使用容器名称而无需将其标记为:
- service_name - service_name:ro - container_name - container_name:rw
我很困惑,这里的容器和服务有什么区别?
服务和容器是相关的,但是两者是不同的。
一项服务可以由一个或多个容器运行。随着docker你可以处理的容器,并docker-compose可以处理服务。
docker
docker-compose
例如:
假设我们有这个docker-compose.yml文件:
docker-compose.yml
web: image: example/my_web_app:latest expose: - 80 links: - db db: image: postgres:latest
此撰写文件定义了两个服务,web和db。
web
db
在运行时docker-compose up,假设项目目录已test1组成,将启动2个名为myapp_db_1和的容器myapp_web_1。
docker-compose up
test1
myapp_db_1
myapp_web_1
$ docker ps -a CONTAINER ID IMAGE COMMAND ... NAMES 1c1683e871dc test1_web "nginx -g" ... test1_web_1 a41360558f96 test1_db "postgres -d" ... test1_db_1
因此,在这一点上,您有2个服务和1个容器。
但是您可以扩展名为web5个容器的服务。
$ docker-compose scale web=5 Creating and starting 2 ... done Creating and starting 3 ... done Creating and starting 4 ... done Creating and starting 5 ... done
在这一点上,您有2个服务和6个容器
$ docker ps -a CONTAINER ID IMAGE COMMAND ... NAMES 1bf4c939263f test1_web "nginx -g" ... test1_web_3 d3033964a44b test1_web "nginx -g" ... test1_web_4 649bbda4d0b0 test1_web "nginx -g" ... test1_web_5 a265ea406727 test1_web "nginx -g" ... test1_web_2 1c1683e871dc test1_web "nginx -g" ... test1_web_1 a41360558f96 test1_db "postgres -d' ... test1_db_1
此外,借助docker-compose,您可以针对一个或多个服务运行子命令。
$docker-compose stop web