lihy0 2018-06-08
Centos下Docker搭建LNMP环境
1. 安装Docker
[1]前提: Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本
[root@kewen ~]# uname -r
[2] Docker 软件包和依赖包已经包含在默认的 CentOS-Extras 软件源里,安装命令如下:
[root@kewen ~]# yum -y install docker-io [root@kewen ~]# service docker start [root@kewen ~]# docker run hello-world [root@kewen ~]# docker ps
[3] 镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。
新版的 Docker 使用 /etc/docker/daemon.json(Linux), 网易的镜像中心网址为: https://c.163.com,可以在上面看到各镜像的版本号,选择需要的版本。
请在该配置文件中加入(没有该文件的话,请先建一个):
{ "registry-mirrors": ["http://hub-mirror.c.163.com"] }
2. 安装Nginx
[1] 首先,创建目录nginx,用于存放后面的相关东西。
[root@kewen ~]# mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf [root@kewen ~]# touch ~/nginx/conf/nginx.conf (注: 该文件要写好基本配置,不然nginx启动不了)
[2] 拉取nginx镜像,启动nginx
[root@kewen nginx]# docker pull nginx [root@kewen nginx]# docker run -p 8080:80 --name dk-nginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx
[3] 查看nginx进程和查看nginx响应页面
[root@kewen nginx]# docker ps [root@kewen nginx]# curl http://127.0.0.1:8080
[4] 如果出现了,docker ps 看不到nginx进程的话,通过以下手段排查, 查看容器的日志, 并确定-v指向的目录或文件存在,特别是$PWD/conf/nginx.conf,里面配置要正确
[root@kewen nginx]# docker logs dk-nginx
3. 安装php-fpm
[1] 创建目录
[root@kewen ~]# mkdir php-fpm [root@kewen ~]# mkdir -p ~/php-fpm/conf ~/php-fpm/logs [root@kewen ~]# cd php-fpm
[2] pull php-fpm 镜像,并查看是否安装成功
[root@kewen php-fpm]# docker run -p 9090:9000 --name dk-php-fpm -v /root/nginx/www:/www -v /root/php/conf:/usr/local/etc/php -v /root/php/logs:/phplogs -d php:7.1-fpm [root@kewen php-fpm]# docker ps
[3] 修改nginx的fastcgi的php-fpm解析ip和端口
[root@kewen nginx]# docker exec -ti dk-nginx /bin/bash root@3c590147bf6d:/#
[4] 如果发现里面的vi或vim用不了,则必须通过下面的命令安装
root@3c590147bf6d:/# apt-get update root@3c590147bf6d:/# apt-get install -y vim
[5] 修改/etc/nginx/conf.d/default.conf默认,修改php的解析ip和端口, 设置fastcgi_pass 172.17.0.3:9000
root@3c590147bf6d:/# vim /etc/nginx/conf.d/default.conf root@3c590147bf6d:/# exit [root@kewen nginx]# docker restart dk-nginx [root@kewen nginx]# docker inspect dk-php-fpm |grep '"IPAddress"' (查找容器对应的ip和端口)
[6] 修改内容
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { fastcgi_pass 172.17.0.3:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name; include fastcgi_params; } }
4.安装 mysql
[1] 创建mysql需要的目录映射
[root@kewen ~]# mkdir mysql [root@kewen ~]# mkdir -p ~/mysql/conf ~/mysql/logs ~/mysql/data
[2] pull mysql 和 启动mysql
[root@kewen mysql]# docker run -p 6306:3306 --name dk-mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 [root@kewen mysql]# docker ps
完成,一个简单的docker学习过程,记录一下