1.简介
1)官方介绍
官网地址: Overview of Docker Compose | Docker Documentation
定义、运行多个容器。
YAML file 配置文件。
single command。 命令有哪些?
Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration. To learn more about all the features of Compose, see the list of features.
所有的环境都可以使用 Compose。
Compose works in all environments: production, staging, development, testing, as well as CI workflows. You can learn more about each case in Common Use Cases.
三步骤
- Define your app’s environment with a Dockerfile so it can be reproduced anywhere.
dockerfile 保证我们的项目在任何地方都可以运行
- Define the services that make up your app in docker-compose.yml so they can be run together in an isolated environment.
docker-copmose.yaml 这个文件怎么写 service 是什么服务
- Run docker compose up and the Docker compose command starts and runs your entire app. You can alternatively run docker-compose up using the docker-compose binary.
怎么启动项目
作用批量编排容器
2)个人理解
Compose 是Docker官方的开源项目。需要安装!
dockefile 让程序在任何地方运行。 web服务。 redis、mysql、nginx … 多个容器。 run Compose
docker-compose.yaml 文件示例
version: '2.0' services:web:build: . ports:- "5000:5000"volumes:- .:/code- logvolume01:/var/log links:- redis redis:image: redis volumes:logvolume01: {}
docker-compose 安装
1.下载对应的包
/
curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose#这个是使用国外的网站速度比较慢curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose#这个使用的是国内的站点 速度比上边的快
2.授权 这是一个启动脚本需要给他权限 才能启动
[root@localhost bin]# chmod 700 /usr/local/bin/docker-compose[root@localhost bin]# docker-compose versiondocker-compose version 1.25.5, build 8a1c60f6docker-py version: 4.1.0CPython version: 3.7.5OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019[root@localhost bin]#
体验
一个官方文档给我们的例子
https://docs.docker.com/compose/gettingstarted/
跟着文档里的做就行 就是一个初体验
步骤
1.应用app.py
2.Dockerfile 打包为镜像
3.Docker-compose yaml文件 (定义整个服务,需要的环境。 web、redis) 完整的上线服务!
4、启动 compose 项目(docker-compose up)
执行完 dockjer-compose up 之后的流程
1.创建网络
2.执行 docker-compose.yml 文件
3.启动服务
Docker-compose yaml
Creating composetest_web_1 …
done Creating composetest_redis_1 … done
下图这种状态是启动成功的状态 只不过是在前台运行 就会这样
要想要他在后台运行直接 docker-compose up -d 这样就不会有其它信息产生 

①文件名字 composetest
②.服务
version: '3' services:web:build: . ports:- "5000:5000"redis:image: "redis:alpine"
查看服务是否启动成功
会看到 有两个正在运行的容器
docker ps 
还会多出来2个镜像
docker images 
#拓展知识 这个我们在k8s里边会讲到 先了解一下
#拓展知识 这个我们在k8s里边会讲到 先了解一下[root@kuangshen ~]# docker service lsError response from daemon: This node is not a swarm manager. Use "dockerswarm init" or "docker swarm join" to connect this node to swarm and try again.
默认的服务名 文件名服务名 num
多个服务器。集群。A B _num 副本数量服务redis服务 => 4个副本。
集群状态。服务都不可能只有一个运行实例。 弹性、10 HA 高并发。
kubectl service 负载均衡。
③ 网络规则
我们可以看到多了一张网卡
docker network ls 你使用docker-compose 启动的所有服务都会在一个网络下
他们相互之间直接可以通过域名访问

④ 停止 docker-compose
1) docker-copmose down
2) CTRL+c
3.yaml文件 编写规则(核心)
对应的官方文档地址 https://docs.docker.com/compose/compose-file/#compose-file-structure-and-examples
#有三层 版本/服务/其它配置version: '' # 版本services: ## 服务配置服务1: webimages buildnetwork.....服务2: redis....服务3: redis# 其他配置 网络/卷、全局规则volumes: networks: configs:
4.搭建自己的博客使用(WordPress)
官方文档所在地址 : Quickstart: Compose and WordPress | Docker Documentation
博客的yml 文件
书写完完之后 直接执行就行
version: "3.9"services:db:image: mysql:5.7volumes:- db_data:/var/lib/mysqlrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: somewordpressMYSQL_DATABASE: wordpressMYSQL_USER: wordpressMYSQL_PASSWORD: wordpresswordpress:depends_on:- dbimage: wordpress:latestports:- "8000:80"restart: alwaysenvironment:WORDPRESS_DB_HOST: db:3306WORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: wordpressWORDPRESS_DB_NAME: wordpressvolumes:db_data: {}
查看
使用windows 测试 个人的博客搭建成功

