Docker 技术部署基于 LAMP 服务器环境网站

    技术2022-07-10  133

    目录

    一、Docker(一)Docker 容器(二)Docker 映射(三)Docker 网络 二、LAMP 服务器环境部署网站(一)为网站文件创建一个数据卷(二)为数据库创建一个数据卷(三)准备 Apache、Mysql 镜像(四)创建 docker 网络(五)启动 Apache、Mysql 容器,并映射端口、目录和加入网络(六)访问网站(七)安装及填写数据库信息 三、数据卷的数据持久化四、原创内容,手动码字不易,喜欢请点赞收藏。

    一、Docker

    正如其生动的 logo,我瞅着这萌萌的 docker 小鲨鱼拖载着多个集装箱(docker容器),便心生喜爱。

    docker 是运行于 Linux 内核,基于操作系统层面的虚拟化技术。相比传统物理层级的虚拟机具有:

    占用资源少、秒级启动、快速部署、应用隔离、便于迁移、保证开发测试生产环境一致性、多租户环境等优势。

    安装

    uname -r #查看linux内核3.10以上 yum -y update #系统升级 yum install -y docker #安装docker reboot #重启linux systemctl start docker #开启docker服务 docker version #查看docker版本号验证

    思路

    通过docker网络,来实现容器之间的访问。

    我画了幅示意图如下:

    (一)Docker 容器

    创建并运行容器:

    docker run -d [镜像名/id](hash码) #-d后台运行

    查看容器

    docker ps #查看正在运行的容器

    docker ps -a #查看所有容器

    删除容器

    docker rm [容器名/id] #删除容器(exited的)

    控制容器状态

    docker stop [容器名/id] # exited 状态

    docker start/restart [容器名/id] # up 状态

    进入运行容器

    docker exec -it [容器名/id] bash # -it 交互式终端 bash 运行shell程序

    exit # 从容器里退出到宿主机

    (二)Docker 映射

    –port 将宿主机的数据卷映射到容器目录中

    –volume 将宿主机的端口映射到容器端口

    docker run -p 宿主机端口:容器端口 -v 数据卷名:容器目录 --privileged=true [镜像名/id] #--p特殊权限

    数据卷功能:供一个或多个容器使用的宿主机特殊目录;用来持久化数据,它的生命周期独立于容器外

    数据卷操作

    docker volume create 数据卷名 #创建数据卷(自动生成一个目录)

    docker volume ls #列出已有数据卷

    docker volume inspect 数据卷名 #查看某个数据卷(包括它的目录)

    docker volume rm 数据卷名 #删除数据卷(先删使用该卷的容器)

    (三)Docker 网络

    创建并启动容器的同时,再把容器加到特定的网络:

    docker run --network 网络名 [镜像名/id]

    网络功能:实现多个 docker 容器之间的网络互联

    网络操作

    docker network create 网络名 #创建网络

    docker network ls #列出已有网络

    docker network inspect 网络名 #查看某个网络

    docker network rm 网络名 #删除网络

    二、LAMP 服务器环境部署网站

    基于 Linux + Apache + Mysql + Php 的服务器环境,部署网站到 Docker 容器。

    systemctl stop firewalld #先暂时关闭防火墙 systemctl restart docker #并重启docker服务

    (一)为网站文件创建一个数据卷

    数据卷创建

    docker volume create webvol

    Xftp 工具上传文件—>数据卷 webvol 的目录 /var/lib/docker/volumes/webvol/_data

    开启网卡,得到宿主机的 ip 地址

    Xftp 访问宿主机 ip 地址,并上传文件

    Linux 解压文件: unzip Discuz_X3.3_SC_UTF8.zip #先cd到webvol/_data

    修改文件的权限:chmod -R 777 upload

    (二)为数据库创建一个数据卷

    数据卷创建

    docker volume create dbvol

    数据的持久化,防止对应容器删除后,数据库内容也随之被删除

    (三)准备 Apache、Mysql 镜像

    拉取网站服务器:docker pull webdevops/php-apache-dev

    拉取数据库服务器:docker pull mysql:5.5.62

    (四)创建 docker 网络

    docker network create mynet

    (五)启动 Apache、Mysql 容器,并映射端口、目录和加入网络

    启动 Apache 容器

    docker run -d -p 8086:80 -v webvol:/app --network mynet --privileged=true webdevops/php-apache-dev

    apache 网站发布目录 /app进入容器中查看 cat /opt/docker/etc/httpd/vhost.conf 配置

    启动 Mysql 容器

    docker run -d -p 3306:3306 -v dbvol:/var/lib/mysql --network mynet -e MYSQL_ROOT_PASSWORD=123456 --privileged=true mysql:5.5.62 #-e 容器运行设定参数

    mysql 数据存放目录 /var/lib/mysql进入容器中查看 cat /etc/mysql/my.cnf 配置 查看正在运行的容器 docker container ls #可以看到mysql和apache容器已经正在运行

    (六)访问网站

    ​ http://192.168.0.124:8086/upload # http://宿主机ip地址:apache端口/upload 该网站文件夹

    (七)安装及填写数据库信息

    ​ 修改数据库服务器地址为 linux 宿主机的ip,数据库密码是运行 mysql 容器时的密码等。

    安装Discuz!X 填写数据库服务器地址(同宿主机ip),数据库密码等。 正在安装

    论坛网站已成功部署安装

    三、数据卷的数据持久化

    当我停止 docker 服务后,再启动 docker 服务;

    systemctl stop docker systemctl start docker docker container ls dcoker volume ls

    此时容器 mysql 和 apache 已经关闭不运行;

    而数据卷 dbvol 和 webvol 依然存在,其中的数据自然存在,这就是持久化。

    想要再次部署,只需再 run 一次容器,不用再创建数据卷。

    四、原创内容,手动码字不易,喜欢请点赞收藏。

    未经许可不得转载,不得盗用图片,欢迎关注本博主其他原创文章。

    Processed: 0.008, SQL: 9