Docker compose v3版本构建跨主机容器编排构建wordpress集群

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:
+关注继续查看

   在Docker 1.13版本之后,可以说Docker 对于compose容器调度编排实现了飞跃,可以使得在编排容器的时候可以结合Docker swarm集群和跨主机通讯的概念。在Docker swarm 的基础之上引入stack对service镜像管理和编排。下面我们实战一下用之前构建wordpress集群来测试一下:


环境要求:

1、存在了Docker swarm集群:

1
2
3
4
5
[root@master ~]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
e9naz0ctzaaer4bwleruo34x6 *  master    Ready   Active        Reachable
rfcbavxd8yrixximm9e1i6dsn    node1     Ready   Active        Leader
shrzku0k3xx87526lkkkyrxsi    node2     Ready   Active        Reachable

##我这里有三个集群节点,都是以manager的形式存在,当然容器调度也是不影响的。


2、Docker 版本要求是1.13以上的版本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@master ~]# docker version
Client:
 Version:      17.04.0-ce
 API version:  1.28
 Go version:   go1.7.5
 Git commit:   4845c56
 Built:        Mon Apr  3 18:01:50 2017
 OS/Arch:      linux/amd64
Server:
 Version:      17.04.0-ce
 API version:  1.28 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   4845c56
 Built:        Mon Apr  3 18:01:50 2017
 OS/Arch:      linux/amd64
 Experimental: false

3、基于之前的镜像我们构建时候非常简单,直接编写compose文件即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[root@master stack]# cat compose_wordpress.yml 
version: '3'
services:
  php:
    image:  192.168.63.217:5000/lnmp/php:1.0 
    volumes:
      -  /web:/web
    ports:
      - 9000:9000
  nginx:
    image:  192.168.63.217:5000/lnmp/nginx:1.0
    ports:
      - 80:80
    volumes:
      /web:/web
    depends_on:
      - mysql
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure
  mysql:
    image:  192.168.63.217:5000/lnmp/nginx:1.0
    ports:
      - 3306:3306
    volumes:
      /data:/var/lib/mysql

 ##注释;

restrat_policy:表示重启条件,我们定义是错误重启。

在v3版本,没有了link这个概念,容器之间通讯都是使用overlay网络。通讯名称都是以服务名称互联。


4、开始构建:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@master stack]# docker stack deploy -c compose_wordpress.yml wordpress
Creating network wordpress_default
Creating service wordpress_php
Creating service wordpress_nginx
Creating service wordpress_mysql
##构建时候可以看到创建一个wordpress_default这样一个overlay网络:
[root@master stack]# docker network ls
NETWORK ID          NAME                    DRIVER              SCOPE
e1608d2e6f7d        bridge                  bridge              local
5de3863d8bf9        docker_gwbridge         bridge              local
c97de54d6fcc        dockercompose_default   bridge              local
080a6647873b        host                    host                local
wdqd0cye6t5h        wordpress_default       overlay             swarm


5、我们查看一下相关的stack状态:

1
2
3
4
5
[root@master stack]# docker stack services wordpress
ID                  NAME                MODE                REPLICAS            IMAGE
hx5zabzybbny        wordpress_php       replicated          1/1                 192.168.63.217:5000/lnmp/php:1.0
me5s3v37tzsw        wordpress_nginx     replicated          3/3                 192.168.63.217:5000/lnmp/nginx:1.0
txz5xzgnkjbc        wordpress_mysql     replicated          1/1                 192.168.63.217:5000/lnmp/nginx:1.0

6、可以看到worepress 这个调度的stack已经起起来了,因为是与Docker swarm结合,所以我们也可以用Docker swarm 形式来查看和管理:

1
2
3
4
5
6
7
8
9
10
[root@master stack]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE
hx5zabzybbny        wordpress_php       replicated          1/1                 192.168.63.217:5000/lnmp/php:1.0
me5s3v37tzsw        wordpress_nginx     replicated          3/3                 192.168.63.217:5000/lnmp/nginx:1.0
txz5xzgnkjbc        wordpress_mysql     replicated          1/1                 192.168.63.217:5000/lnmp/nginx:1.0
[root@master stack]# docker service ps wordpress_nginx
ID                  NAME                IMAGE                                NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
9pcbe6zvjoa5        wordpress_nginx.1   192.168.63.217:5000/lnmp/nginx:1.0   master              Running             Running 4 minutes ago                       
ode397gc036g        wordpress_nginx.2   192.168.63.217:5000/lnmp/nginx:1.0   node2               Running             Running 4 minutes ago                       
76tznesy3bm8        wordpress_nginx.3   192.168.63.217:5000/lnmp/nginx:1.0   node1               Running             Running 4 minutes ago

 

7、都起起来了,我们访问一下web界面看一下服务是否正常:


wKiom1kK9Gfy8oyMAACK-HGes08977.png


   到处已经完成了这个管理,我们可以看到Docker 社区的集群软件在不断的成熟和完善,期待Docker 推出更好更实用的功能。

 

Docker详情与集群架构部分可以查看:http://www.roncoo.com/course/view/3e9d9c48f76f4c698b8349d04b763467










本文转自 小罗ge11 51CTO博客,原文链接:http://blog.51cto.com/xiaoluoge/1922134,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6天前
|
分布式计算 分布式数据库 Docker
docker 构建 hbase 容器
docker 构建 hbase 容器
24 1
|
21天前
|
Ubuntu 开发者 Docker
Docker镜像:构建、推送和创建多个容器实例
Docker已经成为容器化应用程序的标准。它允许开发者将应用程序和其依赖项封装到一个独立的容器中,确保应用程序在不同环境中具备一致性。在本文中,我们将探讨如何构建自定义Docker镜像、推送和拉取镜像到Docker Hub或私有仓库,以及如何从一个Docker镜像创建多个容器实例。
|
1月前
|
Java Linux Docker
使用Docker构建轻量级Linux容器
使用Docker构建轻量级Linux容器
|
2月前
|
XML Java 数据格式
BeanFactory容器的构建和使用示例
BeanFactory容器的构建和使用示例
50 0
|
2月前
|
存储 负载均衡 调度
Docker 多主机部署:构建容器集群的最佳实践,助力高可用性与负载均衡
Docker 多主机部署:构建容器集群的最佳实践,助力高可用性与负载均衡
57 0
|
3月前
|
jenkins Java Shell
容器 & 服务:Jenkins构建实例
这次准备研究容器相关技术,并不仅仅是学习,而是基于项目的实战。而使用容器的几个典型场景之一,就是通过容器构建/部署应用服务,而这与持续继承是密切相关的。我们可以使用jenkins,也可以使用其他持续继承工具,但最终都离不开对这类工具的理解和应用。在后续的学习中,还会有很多与持续继承工具紧密关联的实践案例,也会有很多问题需要深入调研解决。
47 0
|
4月前
|
存储 PyTorch 算法框架/工具
Pytorch学习笔记(4):模型创建(Module)、模型容器(Containers)、AlexNet构建
Pytorch学习笔记(4):模型创建(Module)、模型容器(Containers)、AlexNet构建
46 0
Pytorch学习笔记(4):模型创建(Module)、模型容器(Containers)、AlexNet构建
|
5月前
|
容器
Echarts四组饼图在同一个容器中构建的解决方案
Echarts四组饼图在同一个容器中构建的解决方案
28 0
|
5月前
|
Linux Shell Docker
为什么构建容器需要 Namespace ?
Namespace 是 Linux 内核的一项功能,该功能对内核资源进行分区,以使一组进程看到一组资源,而另一组进程看到另一组资源。Namespace 的工作方式通过为一组资源和进程设置相同的 Namespace 而起作用,但是这些 Namespace 引用了不同的资源。资源可能存在于多个 Namespace 中。这些资源可以是进程 ID、主机名、用户 ID、文件名、与网络访问相关的名称和进程间通信。
47 0
相关产品
容器服务Kubernetes版
推荐文章
更多