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       : caimh0223@163.com
 * Blog        : http://52qcg.cn
 * QQ          : 876146977
 * 微信        : caimh0223
 * Date        : 2020-04-03
 * Time        : 10:55
 * Description : ********
 */
echo phpinfo();

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


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

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker Compose是一个用于定义和运行多个Docker容器的工具。通过使用Docker Compose,您可以快速搭建LNMPLinux、Nginx、MySQL、PHP)开发环境。下面是一个快速搭建LNMP开发环境的示例docker-compose.yml文件: ```yaml version: '3' services: nginx: image: nginx:latest ports: - 80:80 volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./html:/usr/share/nginx/html depends_on: - php php: image: php:7.4-fpm volumes: - ./php.ini:/usr/local/etc/php/php.ini - ./html:/var/www/html depends_on: - mysql mysql: image: mysql:latest ports: - 3306:3306 environment: - MYSQL_ROOT_PASSWORD=your_password volumes: - ./mysql:/var/lib/mysql ``` 在上面的示例中,我们定义了三个服务:nginx、php和mysql。nginx服务使用nginx:latest镜像,并将主机的80端口映射到容器的80端口。同时,我们将nginx.conf文件和html文件夹分别挂载到容器内的对应路径。php服务使用php:7.4-fpm镜像,并将php.ini文件和html文件夹挂载到容器内的对应路径。mysql服务使用mysql:latest镜像,并将主机的3306端口映射到容器的3306端口。我们还设置了MYSQL_ROOT_PASSWORD环境变量,并将mysql文件夹挂载到容器内的/var/lib/mysql路径。 要快速搭建LNMP开发环境,您只需在包含docker-compose.yml文件的目录中运行以下命令: ```shell docker-compose up -d ``` 这将启动所有定义的服务,并将它们放在后台运行。现在,您可以通过访问http://localhost来访问您的LNMP开发环境

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值