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

Muh*_*min 28 docker docker-compose

volumes_from在docker compose中经历了选项.显然,您可以从容器或服务导入卷.从docker撰写的文档中,它是:

volumes_from

从另一个服务或容器挂载所有卷,可选择指定只读访问(ro)或读写(rw).

volumes_from:
 - service_name
 - service_name:ro
 - container:container_name
 - container:container_name:rw
Run Code Online (Sandbox Code Playgroud)

注意:仅在版本2文件格式中支持container:...格式.在版本1中,您可以使用容器名称而不将其标记为:

- service_name
- service_name:ro
- container_name
- container_name:rw
Run Code Online (Sandbox Code Playgroud)

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

Hem*_*ela 53

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

服务可以由一个或多个容器运行.随着docker你可以处理容器,docker-compose你可以处理服务.

例如:

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

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

db:
  image: postgres:latest
Run Code Online (Sandbox Code Playgroud)

这个撰写文件定义了两个服务,webdb.

当你运行时docker-compose up,假设项目目录test1然后compose将启动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
Run Code Online (Sandbox Code Playgroud)

因此,在这一点上,您有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
Run Code Online (Sandbox Code Playgroud)

在这一点上,您有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
Run Code Online (Sandbox Code Playgroud)

此外,使用docker-compose,您可以针对一个或多个服务运行子命令.

$docker-compose stop web
Run Code Online (Sandbox Code Playgroud)

  • 这个答案太好了,我实际上也竖起大拇指打破了你完美的“69”赞成票 (6认同)