Docker stack运行wordpress示例

docker集群搭建

使用docker swarm搭建集群

参考:https://blog.csdn.net/zz_aiytag/article/details/103716463

我的应用环境

软件版本
centos7.4-1708
docker18.03.0-ce

使用docker stack运行服务

Stack是一组Service,不需要每个Service单独执行启动命令。
选择某个路径新建一个文件夹,
进入文件夹内,新建一个docker-compose.yml文件
输入以下内容

version: "3"
services:
  # mysql数据库服务
  db:
    image: mysql:5.7
    networks:
      - mynetwork
    volumes:
      - myvolume:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: mywordpress
      MYSQL_DATABASE: wordpress
  # wordpress服务
  wordpress:
    depends_on:
      - db
    image: wordpress
    networks:
      - mynetwork
    ports:
      - 8090:80  # 映射端口自定义
    environment:
      WORDPRESS_DB_PASSWORD: mywordpress
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: root

volumes:
  myvolume:
networks:
  mynetwork:

执行以下命令启动这一组服务
f_wordpress名自定义

docker stack deploy -c docker-compose.yml f_wordpress
[root@worker swarm-1]# docker stack deploy -c docker-compose.yml f_wordpress
Creating network f_wordpress_mynetwork
Creating service f_wordpress_db
Creating service f_wordpress_wordpress

使用docker stack ls指令查看集群中运行的所有完整应用。

docker stack  ls
[root@worker swarm-1]# docker stack  ls
NAME                SERVICES
f_wordpress         2

查看应用内各服务的信息

docker stack ps f_wordpress
[root@worker swarm-1]# docker stack ps f_wordpress
ID                  NAME                      IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
c2t99jvksdai        f_wordpress_wordpress.1   wordpress:latest    master.node         Running             Running 25 seconds ago                       
ql7cbeifgdrs        f_wordpress_db.1          mysql:5.7           worker.node         Running             Running 23 seconds ago

2个服务运行在两个节点 上,浏览器上输入任一个节点的IP:8090
结果均可访问wordpress。
在这里插入图片描述

使用docker stack指定节点运行服务

按hostname指定节点

指定service运行的节点需要在docker-compose.yml文件中增加deploy属性

version: "3"
services:
  #mysql数据库
  db:
    image: mysql:5.7
    networks:
      - mynetwork
    volumes:
      - myvolume:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: mywordpress
      MYSQL_DATABASE: wordpress
    deploy:
      placement:
        constraints: [node.hostname == worker.node] # 指定hostname
  #wordpress
  wordpress:
    depends_on:
      - db
    image: wordpress
    networks:
      - mynetwork
    ports:
      - 8090:80
    environment:
      WORDPRESS_DB_PASSWORD: mywordpress
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: root
    deploy:
      placement:
        constraints: [node.hostname == manager.node] # 指定hostname

volumes:
  myvolume:
networks:
  mynetwork:

重新运行应用

docker stack deploy -c docker-compose.yml h_wordpress
[root@worker swarm-1]# docker stack deploy -c docker-compose.yml h_wordpress
Creating network h_wordpress_mynetwork
Creating service h_wordpress_wordpress
Creating service h_wordpress_db

查看服务运行节点

docker stack ps h_wordpress
[root@worker swarm-1]# docker stack ps h_wordpress
ID                  NAME                      IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
s2zx1uwksokp        h_wordpress_db.1          mysql:5.7           worker.node         Running             Running 15 seconds ago                       
qjx9z1do63it        h_wordpress_wordpress.1   wordpress:latest    manager.node        Running             Running 32 seconds ago

几种指定节点的方式

  • 根据manager或者worker节点
  • 根据node的主机名
  • 根据node标签
  • 根据node的ID
  • 根据engine标签

查看自动创建的volume

使用docker volume ls指令查看集群中的volume

docker volume ls
[root@worker _data]# docker volume ls
DRIVER              VOLUME NAME
local               1e0e2f11cd6aa88aa6ac15d8d1c85053120abad9f89c6afe64cdeeaae7044424
local               1f3d66d8dbc3e576e468411b99675a230d82e36dfdccd24683cfed3a83d3e8ea
local               5540adaf6bcd80669935a5246c00ed8e74bc0b30299ba83419b92a0195740b43
local               6ebb29a8498f6dd909d475bdc2c89f2e3c45346314dfc751c2768cc91141a5e5
local               89be7dbd3526b4d1b821ceff8df40adcd0b63be295dd91ba871ecb5684d23352
local               d54ecb3a03110548bdf6e8bc5837422fb2dbe408cf507c036a0e7438af21b55d
local               f_wordpress_myvolume
local               my-vol
local               mysql-data

查看stack应用启动时创建的volume

[root@worker ~]# docker volume inspect f_wordpress_myvolume
[
    {
        "CreatedAt": "2019-12-27T14:43:58+08:00",
        "Driver": "local",
        "Labels": {
            "com.docker.stack.namespace": "f_wordpress"
        },
        "Mountpoint": "/var/lib/docker/volumes/f_wordpress_myvolume/_data",
        "Name": "f_wordpress_myvolume",
        "Options": {},
        "Scope": "local"
    }
]

遇到的问题

在执行docker stack创建应用时,出现了下边的错误,

[root@worker swarm-1]# docker stack deploy -c docker-compose.yml e_wordpress
services.db.volumes.0 must be a string

这个错误的原因是自己粗心大意,手敲的时候在冒号后面多敲了个空格。

 volumes:
      - myvolume:/var/lib/mysql # 冒号后没有空格
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值