一、Docker工具介绍
1. Docekr Machine介绍
Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境。Docker Machine支持在常规Linux操作系统、虚拟化平台、openstack、公有云等不同环境下安装配置docker host。Docker Machine 项目基于 Go 语言实现,目前在 Github 上的维护地址: https://github.com/docker/machine/
2. Docker Compose介绍
微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知。Docker Compose是一种编排服务,基于pyhton语言实现,是一个用于在 Docker 上定义并运行复杂应用的工具,可以让用户在集群中部署分布式应用。用户可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。解决了容器与容器之间如何管理编排的问题。
二、Docker machine的部署
实验准备:
下载工具:docker-machine-Linux-x86_64-0.16.1
server1:安装docker环境(172.25.65.1)
server2和server3用server1中的docker machine快速部署docker环境
1. docker machine的安装
curl -L https://github.com/docker/machine/releases/download/v0.16.1/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine #通过命令直接在官网下载 #由于之前下载好了,这里就直接将该软件移动到/usr/local/bin目录下 mv docker-machine-Linux-x86_64-0.16.1 /usr/local/bin mv /usr/local/bin/docker-machine-Linux-x86_64-0.16.1 /usr/local/bin/docker-machine chmod +x /usr/local/bin/docker-machine docker-machine version #查看版本
2. 设置免密登录(创建machine要求免密登陆远程主机)
ssh-keygen #生成公钥和私钥 ssh-copy-id 目标ip
3. 在真机中下载官方的安装脚本,用来自动安装docker,由于我们本地已有下载好的docker软件,我们只需要修改和调整安装脚本就可以快速安装,避免直接从官网下载docker软件
wget https://get.docker.com vim /var/www/html/index.html #安装脚本放置默认发布目录下,方便server1使用 395 yum_repo="http://172.25.65.250/docker" #提供docker软件 457 $sh_c "$pkg_manager install -y -q docker-ce-cli-18.09.7-3.el7" #安装软件的名称及版本 459 $sh_c "$pkg_manager install -y -q docker-ce-18.09.7-3.el7"
4. 在目标主机上自动搭建yum源
yum-config-manager --add-repo http://172.25.65.250/docker vim /etc/yum.repos.d/172.25.65.250_docker.repo [172.25.65.250_docker] name=added from: http://172.25.65.250/docker baseurl=http://172.25.5.250/docker enabled=1 gpgcheck=0 #添加该行,不检测语句块
5. server1为目标主机快速安装docker环境
docker-machine create --driver generic --engine-install-url="http://172.25.65.250" --generic-ip-address=172.25.5.2 server2 #快速部署daocker docker-machine ls #查看已经部署完毕的主机 docker-machine rm server2 #创建错误时,使用rm擅长主机
三、docker-compose实现负载均衡(nginx+haproxy)
1. 下载docker-compose并安装
mv /usr/local/bin/docker-compose-Linux-x86_64-1.24.1 /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose docker-compose version #查看版本
2. 创建目录,编写docker-compose文件
该文件使python语法,注意每一行的缩进
mkdir compose cd compose/ vim docker-compose.yml web1: image: nginx expose: - 80 volumes: - ./web1:/usr/share/nginx/html web2: image: nginx expose: - 80 volumes: - ./web2:/usr/share/nginx/html haproxy: image: haproxy:latest volumes: - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro links: - web1 - web2 ports: - "80:80" expose: - "80"
3. 编写默认发布文件及haproxy配置文件
cd compose mkdir haproxy mkdir web1 mkdir web2 vim web1/index.html <h1>web1</h1> vim web2/index.html <h1>web2</h1>
cd haproxy/ global log 127.0.0.1 local0 log 127.0.0.1 local1 notice defaults log global mode http option httplog option dontlognull timeout connect 5000ms timeout client 50000ms timeout server 50000ms stats uri /status frontend balancer bind 0.0.0.0:80 default_backend web_backends backend web_backends balance roundrobin server server1 web1:80 check server server2 web2:80 check
4. 导入nginx和haproxy镜像
docker load -i nginx.tar docker load -i haproxy.tar docker tag nginx:1.16 nginx:latest docker images nginx
5. 后台开启运行该文件中的设置
cd /root/compose docker-compose up -d #后台开启并运行
6. 网页中测试
http://172.25.65.1 #访问默认发布页面 http://172.25.65.1/status #查看web的状态信息
关闭一个web进程,观察页面的变化
docker stop compose_web1_1
四、docker stack搭建lnmp+wordpress
1. 导入nginx和wordpress镜像
docker-compose down #关闭docker-compose docker load -i nginx.tar docker load -i wordpress.tar
2. 编写docker-compose.yml文件
mkdir /root/test vim /root/test/docker-compose.yml version: "3.7" services: web: image: wordpress ports: - "8080:80" environment: WORDPRESS_DB_HOST: mysql WORDPRESS_DB_PASSWORD: westos networks: - webnet depends_on: - mysql deploy: replicas: 2 update_config: parallelism: 1 delay: 5s restart_policy: condition: on-failure mysql: image: mysql:5.7 ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: westos MYSQL_DATABASE: wordpress volumes: - "db-data:/var/lib/mysql" networks: - webnet deploy: placement: constraints: [node.role == manager] networks: webnet: volumes: db-data:
3. docker stack进行部署
docker stack deploy -c docker-compose.yml wordpress docker stack ls docker stack services wordpress #查看部署的服务
4. 物理机测试数据库是否可以访问
mysql -h 172.25.65.1 -p
可以登录数据库,且可以查看数据库内容,然后可以通过浏览器进行软件的安装
http://172.25.65.1/
原文链接:https://blog.csdn.net/qq_43830639/article/details/98958013?ops_request_misc=&request_id=240a025250a34f2fb94e001f9213a178&biz_id=&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~koosearch~default-17-98958013-null-null.268%5Ev1%5Econtrol&utm_term=docker%E3%80%81wordpress%E3%80%81wordpress%E5%BB%BA%E7%AB%99%E3%80%81wordpress%E4%B8%BB%E9%A2%98%E3%80%81%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F%E3%80%81