docker compose 中服务和容器的区别

问题描述 投票:0回答:2

我正在查看 docker compose 中的

volumes_from
选项。显然,您可以从容器或服务导入卷。从 docker compose 文档来看,它是:

volume_from

从另一个服务或容器安装所有卷(可选) 指定只读访问(ro)或读写(rw)。

volumes_from:
 - service_name
 - service_name:ro
 - container:container_name
 - container:container_name:rw

注意:container:... 格式仅在版本 2 中受支持 文件格式。在版本1中,您可以使用不带标记的容器名称 他们这样:

- service_name
- service_name:ro
- container_name
- container_name:rw

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

docker docker-compose
2个回答
125
投票

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

一项服务可以由一个或多个容器运行。 使用

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
,那么compose将启动2个名为
test1_db_1
test1_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
投票

我无法完全回答你的问题,因为我自己也不了解服务。不过,我确实了解

volumes_from
与容器的关系,所以这将回答你一半的问题。

集装箱A

volumes: /my/shared/directory
container_name:ca

集装箱B

volumes_from:ca

现在容器 B 中将有一个新目录

/my/shared/directory
,该目录是从容器 A 挂载的 - 容器 B 中的目录内容将与容器 A 中的目录内容完全相同。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.