【实验】使用docker-compose编排lnmp(dockerfile) 完成Wordpress 部署

本文详细介绍了在Linux环境下安装和配置Docker,包括关闭防火墙、设置阿里云镜像加速、安装docker-compose以及部署Nginx、MySQL和PHP镜像。还涉及了docker-compose.yml文件的创建、MySQL权限设置和WordPress安装过程中的常见问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境准备

docker:192.168.67.30

虚拟机:4核4G

关闭防火墙
systemctl stop firewalld 
systemctl disable firewalld
setenforce 0

安装docker

直接点击【复制】粘贴到xshell中即可,

执行过程中若出现睡眠(sleep)通过 kill -9 pid号 ,杀掉重新执行即可

#安装依赖包
yum -y install yum-utils device-mapper-persistent-data lvm2
#设置阿里云镜像
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
#安装最新版本的docker
yum -y install docker-ce docker-ce-cli containerd.io
#设置开机自启
systemctl enable docker.service 
#镜像加速下载
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://fil0uwf5.mirror.aliyuncs.com"]
}
EOF
#重新加载配置,重启docker
systemctl daemon-reload
systemctl restart docker
#下载镜像
docker pull centos:7
docker images

部署nginx、mysql、php 镜像

请参考:http://t.csdnimg.cn/jmeMb 博客

docker-compose部署

#下载
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
 
#安装
chmod +x /usr/local/bin/docker-compose
 
#查看版本
docker-compose --version

①直接拉取了docker-compose文件

②链接下载(太慢了,不建议用)

创建docker-compose.yml文件
cd /opt/lnmp/
vim /opt/lnmp/docker-compose.yml
i
version: '3'
services:
  nginx:
    container_name: fwl-nginx
    hostname: nginx
    build:
      context: /opt/lnmp/nginx
      dockerfile: Dockerfile
    ports:
      - 80:80
      - 443:443
    networks:
      lnmp:
        ipv4_address: 172.18.0.10
    volumes:
      - /opt/lnmp/nginx/html:/usr/local/nginx/html

  mysql:
    container_name: fwl-mysql
    hostname: mysql
    build:
      context: /opt/lnmp/mysql
      dockerfile: Dockerfile
    ports:
      - 3306:3306
    networks:
      lnmp:
        ipv4_address: 172.18.0.20
    volumes:
      - db-data:/usr/local/mysql
    privileged: true

  php:
    container_name: fwl-php
    hostname: php
    build:
      context: /opt/lnmp/php
      dockerfile: Dockerfile
    ports:
      - 9000:9000
    networks:
      lnmp:
        ipv4_address: 172.18.0.30
    volumes:
      - db-data:/usr/local/mysql
      - /opt/lnmp/nginx/html:/usr/local/nginx/html
    depends_on:
      - nginx
      - mysql

networks:
  lnmp:
    driver: bridge
    ipam:
      config:
        - subnet: 172.18.0.0/16
volumes:
  db-data:
拉取centos:7镜像

前面安装docker时如果创建过了,就不用再做了

执行前查看一下

执行docker-compose 创建镜像

docker-compose -f docker-compose.yml up -d

登录mysql

xxxxxxxxxx docker exec -it mysql /bin/bash
mysql -uroot -p

#建库
create database wordpress;
#查看
show databases;
#赋权
grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
#刷新
flush privileges;

浏览器访问
http://192.168.67.30/wordpress/index.php

点击【现在就开始!】

输入刚才创建的【数据库名】、赋权并创建的【用户名】和【密码】,点击【提交】

创建wp-config.php 文件
cd /opt/lnmp/nginx/html/wordpress/
ls
#备份后再修改
cp wp-config-sample.php wp-config.php
vim wp-config.php
i

修改23行的数据库名称

修改26行的用户名

修改29行的数据库密码

输入【用户名】、【密码】,勾选【确认使用弱密码】

输入你的【邮箱地址】

点击【安装WordPress】

点击【登录】

输入【用户名】和【密码】,勾选【记住我的登录信息】

点击【登录】

登录成功页

报错总结

无法拉取镜像

报错:WARNING: IPv4 forwarding is disabled. Networking will not work.

原因:IPv4转发可能被系统内核参数禁用;也可能是由于网络配置文件中的错误设置导致的

解决方法


#先检查是否能上网
ping baidu.com
#不能上网去改ifcfg-ens33,DNS1=114.114.114.114


#永久启用IPv4转发
vim /etc/systcl.conf
#找到并取消注释以下行(如果不存在则添加):
net.ipv4.ip_forward = 1
#保存文件后,运行以下命令使更改生效
sudo sysctl -p

地址池冲突

报错:ERROR: Pool overlaps with other one on this address space

原因:地址池冲突

解决:删除冲突的网路,或者修改要新建的网络地址池

mysql编译安装过程中报错

报错:make: *** [all] Error 2

原因:大概率时因为网络不稳定

解决:重新执行一边命令

docker-compose -f docker-compose.yml up -d

扩展命令

删除所有已停止的容器
docker rm $(docker ps -aq)
批量停止容器
docker ps -a | awk 'NR>=2 {print "docker stop "$1}'|bash
vim 中的set: 命令
:set paste  命令用来启用或禁用粘贴模式,自动缩进、自动补全等功能
:set autoindent 命令来启用自动缩进功能
打包目录
tar -cf docker-compose-lnmp.tar.gz lnmp
上传到宿主机
sz docker-compose-lnmp.tar.gz
nginx 的启动和停止
启动:nginx
停止:nginx -s stop
重载配置文件:nginx -s reload

### 关于 Docker 和 Kubernetes 容器编排部署实验报告示例 #### 使用场景对比分析 在现代微服务架构下,Kubernetes 和 Docker Swarm 成为了主流的选择来实现容器化应用程序的有效管理和自动化运维。两者都提供了强大的功能集用于处理大规模集群环境中的资源调度和服务发现。 对于 **Docker Swarm**, 这是一个轻量级且易于设置的解决方案, 特别适合那些已经熟悉 Docker 生态圈的企业[^1]。它内置了对 Docker API 的支持, 可以让管理员通过简单的命令快速启动一个高可用性的集群,并提供基本的服务网格能力来进行流量路由和健康检查等功能。 另一方面,**Kubernetes (k8s)** 则更为复杂但同时也更加灵活全面。作为一个开源平台,Kubernetes 不仅可以管理 Linux 容器还可以兼容其他类型的容器技术如 Windows Server Containers 或者 rkt 。其丰富的特性涵盖了自动伸缩、滚动更新/回滚、自我修复机制等方面,在企业级生产环境中表现出色[^2]。 #### 实验设计概述 ##### 环境准备 - 创建一个多节点测试网络,包括至少三个计算节点作为工作机器; - 在其中一个节点上安装并初始化 Docker Swarm 或 kubeadm 工具以建立主控单元; - 配置防火墙规则允许必要的端口通信; ##### 测试目标 评估两个平台上执行相同任务所需的时间成本和技术难度差异: 1. 构建镜像并将它们推送到私有仓库中; 2. 编写描述文件定义应用组件之间的依赖关系及其配置参数; 3. 应用这些描述文件到相应的目标环境中完成实例化过程; 4. 对已部署的应用程序实施监控确保正常运作状态; ##### 结果讨论 根据上述操作步骤得出结论: - Docker Swarm 更加直观易懂,特别适用于小型团队或者项目初期阶段想要迅速搭建起一套简单可靠的 CI/CD 流水线的情况; - 而当涉及到更复杂的业务逻辑需求时(比如多版本共存),则可能需要借助外部工具链补充不足之处; 相反地,k8s虽然入门门槛较高一些但是由于具备高度可定制化的API接口以及庞大的社区贡献使得长期来看更具投资价值. ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 ``` #### 总结 无论是选择 Docker Swarm 还是 Kubernetes 来进行容器编排部署取决于具体应用场景和个人偏好等因素综合考量的结果。前者以其简洁明快著称而后者凭借强大完整的生态系统赢得了广泛认可和支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值