docker构建lnmp环境(快速构建lnmp环境)

轻轻松松学docker ,文章末尾提供资料下载。

一、Docker环境安装

  • 卸载老版本docker
yum remove docker docker-common docker-selinux docker-engine
  • 安装需要的软件包
yum -y install  yum-utils device-mapper-persistent-data lvm2
  • 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
##部分网络可能上面的源会卡可使用阿里源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 查看docker版本
yum list docker-ce --showduplicates|sort -r

查看版本效果图

  • 安装docker(不指定版本默认选择最新版进行安装)
yum -y install docker-ce
  • 启动Docker
sudo systemctl enable docker
sudo systemctl start docker

在这里插入图片描述

  • 测试安装
docker run hello-world

如输出如下提示则说明安装成功
在这里插入图片描述

二、快速构建lnmp环境

为了快速构建,本次项目采用dockerhub上的镜像
这是传送门 2233466866/lnmp

1、下载镜像(image)

【镜像】 可以理解为操作系统的镜像文件如 isogho文件

docker pull 2233466866/lnmp

2、生成容器(container)

【容器】 可形象理解为操作系统吧!
【启动容器】 可理解为安装操作系统 该操作系统把我们主要的应用都集成了

  • 快速构建容器环境(操作系统安装后会自动开启了)
docker run -dit \
-p 9999:80 \
-p 443:443 \
-p 3306:3306 \
-p 9000:9000 \
--privileged=true \
--name=lnmp \
2233466866/lnmp

注: -p [宿主机端口]:[容器端口]
-d 如果使用了 -d 参数运行容器 此时容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面(输出结果可以用 docker logs 查看)。
–name 是给容器起个名称 方便后面使用

3.连接容器(Connect)

连接容器 可以理解为通过终端登录进系统了 如 xshellcrt 连接linux

 #容器名称与上一步保持一致
  • 注意登录前后主机名区别(说明我们进入容器里面来了,此时你可以把他理解为一个独立的linux环境)

在这里插入图片描述

  • 在这里你可以使用linux的一些基本命令

在这里插入图片描述

  • 测试效果(在浏览器输入宿主机ip:端口号访问)

如果出现如下显示则说明换件安装成功至此环境已经搭建完成
具体配置修改可以进入容器修改,然后就像linux下操作完全一样了
如遇配置问题可以参考【LNMP环境搭建

在这里插入图片描述

4、容器启动与停止

容器停止命令docker container stop [容器名称]
容器启动命令docker container start [容器名称]

  • 容器停止命令
    在宿主机上执行如下命令
docker container stop lnmp

在这里插入图片描述

  • 容器启动命令
docker container start lnmp

在这里插入图片描述

5、配置文件说明

#进入容器中查看如下配置(可自己修改)
# PHP配置文件
/usr/local/php7/lib/php.ini
/usr/local/php7/etc/php-fpm.conf
/usr/local/php7/etc/php-fpm.d/www.conf
#nginx配置文件
/usr/local/nginx/conf/nginx.conf
# mysql配置文件位置
/etc/my.cnf

6、故障处理

  • 端口被占用
docker: Error response from daemon: driver failed \
programming external connectivity on endpoint lnm1p \
(75654aff31376dbf030941c1278a62dbbbc246843bec07525d2980c81a088f2c): \
Bind for 0.0.0.0:9000 failed: port is already allocated.

使用 netstat -onutpl 查看端口占用情况并关闭占用程序
在这里插入图片描述

  • 容器名称已存在处理
    提示如下
docker: Error response from daemon: Conflict. \
The container name "/lnm1p" is already in use by container\ "546478d9f9ad5eba83caa33e9cd3fae451ff\
3aa05ce14424dfb57644f0e780a6". \
You have to remove (or rename) \
that container to be able to reuse that name.
See 'docker run --help'.

出现这种情况说明这个容器名称已经有了,你可以通过 docker ps -a 查看所有容器,你可以选择删除重名的容器或将你的容器重命名
在这里插入图片描述
删除容器命令 docker rm -f [容器名称或id]
在这里插入图片描述

  • 然后再重新构建容器即可
docker run -dit \
-p 9999:80 \
-p 443:443 \
-p 3306:3306 \
-p 9000:9000 \
--privileged=true \
--name=lnmp \
2233466866/lnm1p
  • 站点无法访问
    容器环境已经构建成功了但是无法通过网络访问。您需要做如下操作
  1. 进入宿主机关闭防火墙或者开放指定端口
    services iptables stop
  2. 如果是云服务器需要配置安全策略(可参照各云服务器厂商配置说明)
  • 数据库密码初始化
    在容器中执行如下命令然根据初始化密码登录后修改数据库密码
cat /var/log/mysqld.log|grep 'A temporary password'

在这里插入图片描述

三、挂载目录构建LNMP

1、下载镜像

已经下载的用户可以跳过此步骤。

docker pull 2233466866/lnmp

2、构建容器

使用此方法将项目目录挂载在宿主机的指定位置方便业务部署

# 高级用法(Advanced usage)
docker run -dit \
-p 9999:80 \
-p 443:443 \
-p 3306:3306 \
-p 9000:9000 \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
-v /data/docker-lnmp/www:/www \
--privileged=true \
--name=lnmp2 \
2233466866/lnmp

在这里插入图片描述

3、进入容器

docker exec -it lnmp2 bash

查容器中的/www 目录发现该目录下已经存在 index.html 说明挂载文件没问题。
在这里插入图片描述
我们在宿主机中编辑 /data/docker-lnmp/www/index.html
录入如下内容
在这里插入图片描述
访问效果
在这里插入图片描述
同样我们可以输出 phpinfo 信息
我们在宿主机中新建 /data/docker-lnmp/www/index.php文件

<?php
/**
 * User        : 扣丁曼
 * Email       : [email protected]
 * Blog        : http://52qcg.cn
 * QQ          : 876146977
 * 微信        : caimh0223
 * Date        : 2020-04-03
 * Time        : 10:55
 * Description : ********
 */
echo phpinfo();

访问效果如下
在这里插入图片描述


END
好吧!今天就到这里。
喜欢docker的小伙伴可免费领取docker学习电子书籍
领取方式 关注公众号 扣丁曼 回复 docker 即可!需要其他资料也可以向我留言,我想尽办法满足你!

猜你喜欢

转载自blog.csdn.net/Qcg0223/article/details/105138907