docker comp服务和容器之间的区别

时间:2016-02-22 23:11:06

标签: docker docker-compose

我在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

我很困惑,这里的容器和服务有什么区别?

2 个答案:

答案 0 :(得分:45)

服务和容器是相关的,但两者都是不同的。

服务可以由一个或多个容器运行。 使用docker可以处理容器,使用docker-compose可以处理服务。

例如:

假设我们有docker-compose.yml个文件:

web:
  image: example/my_web_app:latest
  expose:
    - 80
  links:
    - db 

db:
  image: postgres:latest

此撰写文件定义了两项服务webdb

当您运行docker-compose up时,假设项目目录为test1,则撰写将启动2个名为myapp_db_1myapp_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中目录的内容完全相同

如果您发现有关服务的信息请告诉我