我在docker compose中经历了volumes_from
选项。显然,您可以从容器或服务导入卷。来自docker撰写的文档是:
volumes_from
可选地从其他服务或容器装载所有卷 指定只读访问(ro)或读写(rw)。
volumes_from: - service_name - service_name:ro - container:container_name - container:container_name:rw
注意:容器:...格式仅在版本2中受支持 文件格式。在版本1中,您可以使用容器名称而不标记 他们是这样的:
- service_name - service_name:ro - container_name - container_name:rw
我很困惑,这里的容器和服务有什么区别?
答案 0 :(得分:45)
服务和容器是相关的,但两者都是不同的。
服务可以由一个或多个容器运行。
使用docker
可以处理容器,使用docker-compose
可以处理服务。
例如:
假设我们有docker-compose.yml
个文件:
web:
image: example/my_web_app:latest
expose:
- 80
links:
- db
db:
image: postgres:latest
此撰写文件定义了两项服务web
和db
。
当您运行docker-compose up
时,假设项目目录为test1
,则撰写将启动2个名为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个容器。
但您可以将名为web
的服务扩展为使用5个容器。
$ 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
答案 1 :(得分:2)
我无法完全回答你的问题,因为我自己并不了解服务。 但是,我确实理解与容器有关的volumes_from,所以这将回答你问题的一半:) 部分答案总比没有好?
CONTAINER A
volumes: /my/shared/directory
container_name:ca
CONTAINER B
volumes_from:ca
现在容器B将在其/ my / shared /目录中有一个新目录,它从容器A挂载 - 容器B中目录的内容与容器A中目录的内容完全相同/ p>
如果您发现有关服务的信息请告诉我