文章目录

  • 一、Docker环境安装
  • 二、快速构建lnmp环境
  • 1、下载镜像(image)
  • 2、生成容器(container)
  • 3.连接容器(Connect)
  • 4、容器启动与停止
  • 5、配置文件说明
  • 6、故障处理
  • 三、挂载目录构建LNMP
  • 1、下载镜像
  • 2、构建容器
  • 3、进入容器



一、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一键安装aria2 docker一键安装lnmp_docker

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

Docker一键安装aria2 docker一键安装lnmp_php_02

  • 测试安装
docker run hello-world

如输出如下提示则说明安装成功

Docker一键安装aria2 docker一键安装lnmp_Docker一键安装aria2_03

二、快速构建lnmp环境

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

  • 下载前请切换国内docker镜像地址请参考【docker更换国内镜像】(不然速度惨目忍睹)
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环境)

Docker一键安装aria2 docker一键安装lnmp_Docker一键安装aria2_04

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

Docker一键安装aria2 docker一键安装lnmp_linux_05

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

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

Docker一键安装aria2 docker一键安装lnmp_docker_06

4、容器启动与停止

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

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

Docker一键安装aria2 docker一键安装lnmp_docker_07

  • 容器启动命令
docker container start lnmp

Docker一键安装aria2 docker一键安装lnmp_linux_08

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一键安装aria2 docker一键安装lnmp_Docker一键安装aria2_09

  • 容器名称已存在处理
    提示如下
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一键安装aria2 docker一键安装lnmp_Docker一键安装aria2_10


删除容器命令 docker rm -f [容器名称或id]

Docker一键安装aria2 docker一键安装lnmp_php_11

  • 然后再重新构建容器即可
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'

Docker一键安装aria2 docker一键安装lnmp_Docker一键安装aria2_12

三、挂载目录构建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

Docker一键安装aria2 docker一键安装lnmp_Docker一键安装aria2_13

3、进入容器
docker exec -it lnmp2 bash

查容器中的/www 目录发现该目录下已经存在 index.html 说明挂载文件没问题。

Docker一键安装aria2 docker一键安装lnmp_Docker一键安装aria2_14


我们在宿主机中编辑 /data/docker-lnmp/www/index.html 录入如下内容

Docker一键安装aria2 docker一键安装lnmp_Docker一键安装aria2_15


访问效果

Docker一键安装aria2 docker一键安装lnmp_php_16


同样我们可以输出 phpinfo 信息

我们在宿主机中新建 /data/docker-lnmp/www/index.php文件

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

访问效果如下

Docker一键安装aria2 docker一键安装lnmp_Docker一键安装aria2_17


END
好吧!今天就到这里。