『中级篇』Docker Compose到底是什么(38)
2018-09-22 12:33:02
李明
  • 访问次数: 382
  • 注册日期: 2018-07-09
  • 最后登录: 2022-11-17

原创文章,欢迎转载。转载请注明:转载自 IT人故事会,谢谢!
原文链接地址: 『中级篇』Docker Compose到底是什么(38)

多容器的APP太恶心了

美团,阿里,京东一个项目很多个容器,如果扩展那不是运维人员基本没办法干了,几千个几万个。

  • 要从Dockerfile build image 或者去dockerhub拉取image

  • 要创建多个container

  • 要管理这些container(启动停止删除)

DOcker Compose "批处理"

通过文本的方式,把要处理的容器按照顺序执行,如果是多容器也就是通过一条命令就搞定了

165ff8c84827caf5?w=1143&h=461&f=png&s=11

Docker Compose 了解它

https://docs.docker.com/compose/overview/ ,version版本统一用3,其实3是兼容2的,version版本1 就不要考虑了已经废弃了,一定要往前看。3和2的最大区别是3比2强大,好像是废话,3支持多机和单机,2仅支持单机。

  • Docker Compose 是一个工具,命令行工具。

  • 这个工具可以通过yml文件定义多容器的docker应用

  • 通过一条命令就可以根据yml文件的定义去创建或者管理这多个容器

165ff8c8412da51d?w=1240&h=603&f=png&s=25
165ff8c842d254a8?w=1240&h=445&f=png&s=99

docker-compose.yml 介绍
  • services

  1. 一个service代表一个container,这个container可以从dockerhub的image来创建,或者从本地的Dockerfile build出来的image来创建。

  2. service的启动类似docker run,我们可以给其指定network和volme,所以可以给service指定network和volume的引用

165ff8c8484ae41b?w=1240&h=684&f=png&s=28
165ff8c849038b1f?w=895&h=550&f=png&s=934

  • networks


    165ff8c84944d860?w=1238&h=545&f=png&s=15

  • volumes


    165ff8c87a2f3173?w=1232&h=574&f=png&s=12

docker-compose 上例子

源码地址: https://github.com/limingios/docker中的No.4

  • 访问路径


    165ff8c87adec33f?w=659&h=72&f=png&s=2572

  • docker-compose 源码实例

#docker-Compse的版本 version: '3' 
#建立2个service 一个wordpress 一个 mysql services:   wordpress:     image: wordpress #端口映射80 映射到8080端口     ports:       - 8080:80 #环境变量2个     environment:       WORDPRESS_DB_HOST: mysql       WORDPRESS_DB_PASSWORD: root     networks:       - my-bridge   mysql:     image: mysql     environment:       MYSQL_ROOT_PASSWORD: root       MYSQL_DATABASE: wordpress     volumes:       - mysql-data:/var/lib/mysql     networks:       - my-bridge #建立一个volumes  volumes:   mysql-data: #建立一个networks networks:   my-bridge:     driver: bridge

PS:上节通过image 和container的方式创建wordpress,一般麻烦吧还不算特别麻烦,但是相比今天的docker-compose.yml来说,还是docker-compose.yml文件更方便些吧。

image