目录
一、wordpress部署 (一)准备环境 (二)运行镜像 二、Docker Compose (一)Docker Compose简介 (二)Docker Compose环境准备 (三)Docker Compose实战 (四)水平扩展和负载均衡一、wordpress部署
这里先以wordpress的部署为例引出Docker Compose,wordpress的部署需要wordpress和mysql的镜像:
(一)准备环境
1、拉取wordpress镜像
2、拉取mysql镜像
3、镜像列表
(二)运行镜像
1、运行mysql镜像
上述命令中 -v指定存储卷,MYSQL_ROOT_PASSWORD设置数据库密码,MYSQL_DATABASE指定创建数据库的名称,详情参考:https://hub.docker.com/_/mysql
查看启动的容器:
2、启动wordpress镜像
上述命令中WORDPRESS_DB_HOST是需要连接的数据库,指定的就是刚刚创建的mysql容器,这里没有输入WORDPRESS_DB_USER、WORDPRESS_DB_PASSWORD的密码等环境信息,因为默认的就是mysql容器的用户名、密码,详情查看:https://hub.docker.com/_/wordpress。
然后查看容器信息:
目前两个容器都已经起来了,最后可以访问主机的8080端口即可。
二、Docker Compose
从上面的部署上可以看出存在以下问题:
需要单独拉取多个容器,一个个的部署 需要同时管理多个容器(包括启动、停止等动作)那么有没有一种类似批处理的方式,不需要这么繁琐的过程呢?这就需要Docker Compose了。
(一)Docker Compose简介
1、什么是Docker Compose?
Docker Compose是一个工具
这个工具可以通过yml文件来定义多容器的应用
通过一条命令就可以根据yml文件的定义去创建、管理多个容器
2、docker-compose.yml文件
Docker Compose中很重要的就是docker-compose.yml文件,这个文件包含了三个很重要的概念,分别是services、networks以及volumes。
services
一个service就是一个container,这个container可以从dockerhub的image来,也可以从本地的Dockerfile创建的image来;service的启动类似于docker run,当我们在使用docker run 是可以给其指定参数network和volume,同理也可以给service指定network和volume。
例如:
上面这个yml文件中定义了一个service,其实就相当于下面这条命令:
networks
上面这个yml文件中定义了一个network,其实就相当于下面这条命令:
volumes
上面这个yml文件中定义了一个volume,其实就相当于下面这条命令:
(二)Docker Compose环境准备
Docker Cmpose是一个工具,所以是需要安装的,安装详情参考:https://docs.docker.com/compose/install/。
1、下载可执行文件
2、设置权限
3、查看版本
4、docker-compose中的常用命令
docker-compose up
用于启动service创建容器,执行yml文件
docker-compose -d
后台执行容器服务
docker-compose ps
显示正在运行的容器
docker-compose stop
停止正在运行的容器服务
docker-compose down
停止容器服务,并且移除容器(container)、镜像(image)、网络(network)以及存储卷(volume)
docker-compose images
显示通过docker-compose up创建的容器服务的镜像列表
docker-compose exec container(Names) bash
进入某个容器,可以在容器内部进行操作
(三)Docker Compose实战
1、wordpress
编写docker-compose.yml文件
启动services中的容器
通过docker-compose up启动容器,这个命令默认执行的就是当前目录下的docker-compose.yml文件,你也可以将这个命令写完整就是docker-compose -f docker-compose.yml up
2、Flask Web
新建app.py docker-compose.yml Dockerfile三个文件
编写app.py文件
编写Dockerfile文件
编写docker-compose.yml文件
启动容器服务
访问服务
(四)水平扩展和负载均衡
1、scale
在上面通过Docker Compose完成了flask的应用部署,目前运行的容器:
通过docker-compose –help命令,可以看到有一个scale参数:
它的意思就是可以启用多个应用容器:
但是显然这样会出错,为什么呢?因为三个容器端口映射都是一样的,必然剩下的两个应用容器会报端口占用的错误。此时需要修改一下docker-compose.yml文件将web应用的端口那一项配置去掉:
这样就可以了。
查看容器:
但是显然这样只能在容器内去访问,因为端口没有映射出来,那么这样接下来怎么做呢?
我们接下来可以这样做,用一个HAProxy的容器来接收请求,然后通过端口转发给不同的web服务器,这样就解决以下问题:
外界不能访问,只能容器内访问 负载均衡2、水平扩展和负载均衡
文件结构
编写app.py
编写Dockerfile文件
编写docker-compose.yml文件
运行
可以看到启动了三个容器,分别为:
我们看到web应用目前只有一个,可以启动多个来处理请求:
可以看到,直接将web应用启动了5个容器,分担从HAProxy的请求。
到此这篇关于Docker Compose多容器部署的实现的文章就介绍到这了,更多相关Docker Compose多容器部署内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://www.cnblogs.com/shenjianping/p/12257642.html