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.

三步骤

  1. Define your app’s environment with a Dockerfile so it can be reproduced anywhere.

dockerfile 保证我们的项目在任何地方都可以运行

  1. 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 是什么服务

  1. 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 文件示例

  1. version: '2.0' services:
  2. web:
  3. build: . ports:
  4. - "5000:5000"
  5. volumes:
  6. - .:/code
  7. - logvolume01:/var/log links:
  8. - redis redis:
  9. image: redis volumes:
  10. logvolume01: {}

docker-compose 安装

我们安装是以官方文档 为基础的
image.jpeg

1.下载对应的包

/

  1. curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker
  2. -compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  3. #这个是使用国外的网站速度比较慢
  4. curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker
  5. -compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  6. #这个使用的是国内的站点 速度比上边的快

image.jpeg

2.授权 这是一个启动脚本需要给他权限 才能启动

  1. [root@localhost bin]# chmod 700 /usr/local/bin/docker-compose
  2. [root@localhost bin]# docker-compose version
  3. docker-compose version 1.25.5, build 8a1c60f6
  4. docker-py version: 4.1.0
  5. CPython version: 3.7.5
  6. OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
  7. [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 这样就不会有其它信息产生
image.jpeg
image.jpeg
①文件名字 composetest
②.服务

  1. version: '3' services:
  2. web:
  3. build: . ports:
  4. - "5000:5000"
  5. redis:
  6. image: "redis:alpine"

查看服务是否启动成功

会看到 有两个正在运行的容器
docker ps
image.jpeg
还会多出来2个镜像
docker images
image.jpeg
#拓展知识 这个我们在k8s里边会讲到 先了解一下

  1. #拓展知识 这个我们在k8s里边会讲到 先了解一下
  2. [root@kuangshen ~]# docker service ls
  3. Error response from daemon: This node is not a swarm manager. Use "docker
  4. swarm 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 启动的所有服务都会在一个网络下
他们相互之间直接可以通过域名访问
image.jpeg
image.jpeg
④ 停止 docker-compose
1) docker-copmose down
2) CTRL+c

3.yaml文件 编写规则(核心)

对应的官方文档地址 https://docs.docker.com/compose/compose-file/#compose-file-structure-and-examples

  1. #有三层 版本/服务/其它配置
  2. version: '' # 版本
  3. services: ## 服务配置
  4. 服务1: web
  5. images build
  6. network
  7. .....
  8. 服务2: redis
  9. ....
  10. 服务3: redis
  11. # 其他配置 网络/卷、全局规则
  12. volumes: networks: configs:

image.jpeg
**

4.搭建自己的博客使用(WordPress)

官方文档所在地址 : Quickstart: Compose and WordPress | Docker Documentation
博客的yml 文件
书写完完之后 直接执行就行

  1. version: "3.9"
  2. services:
  3. db:
  4. image: mysql:5.7
  5. volumes:
  6. - db_data:/var/lib/mysql
  7. restart: always
  8. environment:
  9. MYSQL_ROOT_PASSWORD: somewordpress
  10. MYSQL_DATABASE: wordpress
  11. MYSQL_USER: wordpress
  12. MYSQL_PASSWORD: wordpress
  13. wordpress:
  14. depends_on:
  15. - db
  16. image: wordpress:latest
  17. ports:
  18. - "8000:80"
  19. restart: always
  20. environment:
  21. WORDPRESS_DB_HOST: db:3306
  22. WORDPRESS_DB_USER: wordpress
  23. WORDPRESS_DB_PASSWORD: wordpress
  24. WORDPRESS_DB_NAME: wordpress
  25. volumes:
  26. db_data: {}

查看
image.jpeg
使用windows 测试 个人的博客搭建成功
image.jpeg