什么是docker-compose.yml文件?

我找不到什么是docker组成文件的真正定义

这是否正确? :

docker-compose文件是允许我们同时部署多个docker容器的YAML文件。

我想解释一下什么是docker-compose文件

docker-compose.yml是docker-compose的configuration文件。

它允许同时部署,组合和configuration多个docker-container。 Docker的“规则”是将每一个进程外包给一个自己的docker集装箱。

例如一个简单的networkingdocker组成。 你需要一个服务器,一个数据库和PHP。 所以你可以用apache2,php和mysql设置三个docker-container。

docker-compose的优点是易于configuration。 你不必写一大堆参数到bash中。 你可以在docker-compose.yml中预定义它。

db: image: mysql ports: - "3306:3306" environment: MYSQL_DATABASE: example_db MYSQL_USER: root MYSQL_PASSWORD: rootpw php: image: php ports: - "80:80" - "443:443" volumes: - ./SRC:/var/www/ links: - db 

正如你在我的例子中看到的那样。 我设置了端口,外部数据的卷,并链接到其他docker容器。 它的速度很快,可重复,并不难理解。

Docker compose是允许你同时部署多个容器的工具。 文件docke-compose.yml是带有指令的文件 – 如何做到这一点。 在这个文件中,你指导docker-compose在哪里采取Dockerfile来build立特定的图像,你要公开的端口,如何链接容器,你想绑定到主机的端口等Docker-compose读取该文件并执行命令。 在构build和运行单个泊坞窗容器时,它将用作所有可选参数。 例:

 version: '2' services: nginx: build: ./nginx links: - django:django - angular:angular ports: - "80:80" - "8000:8000" - "443:443" networks: - my_net django: build: ./django expose: - "8000" networks: - my_net angular: build: ./angular2 links: - django:django expose: - "80" networks: - my_net networks: my_net: external: name: my_net 

这个例子指示docker-compose:

  • 从path./nginx构buildnginx
  • 链接angular和Django的容器(所以他们在dockernetworking中的IP是通过名称parsing)
  • 将端口80,443,8000绑定到主机
  • 将它添加到networkingmy_net(因此所有3个容器都在同一个networking中,因此可以相互访问)

然后类似的做django和angular容器。
如果你只使用docker命令,它会是这样的:

 docker build --name nginx . docker run --link django:django angular:angular --expose 80 443 8000 --net my_net nginx 

因此,尽pipe您可能不想为每个图像/容器input所有这些选项和命令,但您可以编写docker-compose.yml文件,在其中以可读的格式编写所有这些指令(与Ansible一样 )