先切换到root,防止权限不够
sudo -i
查看本地镜像是否有nginx
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php 7.1-fpm 478a9922ffc7 2 months ago 358MB
nginx latest 719cd2e3ed04 2 months ago 109MB
hello-world latest fce289e99eb9 8 months ago 1.84kB
此处已经拉取过镜像,如果没有的执行命令,没有带上版本号是拉取最新的,版本显示为 latest,也可指定版本号
docker pull nginx
执行以上命令之后再次查看镜像这时已经拉取nginx镜像下来,接下来用此镜像启动一个容器
[root@localhost ~]# docker run -p 80:80 --name lnmp_nginx -d nginx
ccf88c7c619fccea35baa30cd11cd3d07bcd0979774cf16b2dc7c3955a09e85b
返回一个字符串表示创建容器成功,即为该容器的id
命令选项说明:
命令查看容器运行状态
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ccf88c7c619f nginx "nginx -g 'daemon of…" About a minute ago Up About a minute 0.0.0.0:80->80/tcp lnmp_nginx
可以看到容易是运行中的,浏览器访问看是否成功,此处用的虚拟机,先查看虚拟机IP,使用命令
ifconfig
可以看到虚拟机IP是 192.168.33.11,浏览器访问,出现以下界面表示成功,如果没有成功可能是没有开启服务器80端口
先查看本地是否已有 PHP 镜像,如果没有则拉取,方法同上面的 nginx 一样
先查看都有哪些版本的 PHP 镜像,命令
docker search php
docker pull php:7.1-fpm
等一会就拉取镜像成功了,如果太慢可能是镜像地址是国外的,配置国内加速地址即可,前面的文章也有介绍,这里不在赘述
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php 7.1-fpm 7cc44ffec1f5 2 weeks ago 392MB
php <none> 478a9922ffc7 2 months ago 358MB
nginx latest 719cd2e3ed04 2 months ago 109MB
hello-world latest fce289e99eb9 8 months ago 1.84kB
可以看到 php 7.1-fpm 已经拉取成功
创建目录 nginx,用于存放后面的相关东西
切换到虚拟机挂载目录
cd /vagrang/docker
mkdir -p nginx/www nginx/logs nginx/conf
可以看到目录下有刚创建的目录
拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录,容器 ID 可以通过 docker ps 命令查看
[root@localhost docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
865dda10743f nginx "nginx -g 'daemon of…" 7 minutes ago Up 7 minutes 0.0.0.0:80->80/tcp lnmp_nginx
复制配置文件
[root@localhost docker]# pwd
/vagrant/docker
[root@localhost docker]# docker cp 865dda10743f:/etc/nginx/nginx.conf nginx/conf
[root@localhost docker]#
先把刚才的容器删除,在重新创建一个容器
列出现有容器
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
865dda10743f nginx "nginx -g 'daemon of…" 17 minutes ago Up 17 minutes 0.0.0.0:80->80/tcp lnmp_nginx
找到需要删除的容器ID,执行删除,如删除容器 lnmp_nginx,先停止运行的容器,在执行删除
[root@localhost docker]# docker stop 865dda10743f
865dda10743f
[root@localhost docker]# docker rm 865dda10743f
865dda10743f
docker run -d -p 80:80 --name lnmp-nginx -v /vagrant/docker/nginx/www:/usr/share/nginx/html -v /vagrant/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /vagrant/docker/nginx/logs:/var/log/nginx nginx
返回容器ID说明创建成功
选项说明:
进入www目录,创建文件index.html
[root@localhost docker]# cd nginx/www
[root@localhost www]# pwd
/vagrant/docker/nginx/www
输入以下内容
<html>
<head>
<meta charset="utf-8">
<title>dockertitle>
head>
<body>
<h1>nginx 服务--indexh1>
<p>docker 部署lnmpp>
body>
html>
先用前面的 php 7.1-fpm 镜像创建一个容器
docker run --name lnmp-php -v /vagrant/docker/nginx/www:/www -d php:7.1-fpm
返回一串字符即表示成功,这串字符是该容器ID
选项说明:
创建 /vagrant/docker/nginx/conf/conf.d 目录:
mkdir /vagrant/docker/nginx/conf/conf.d
在此目录 /vagrant/docker/nginx/conf/conf.d 创建文件 nginx.conf,添加如下内容
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}
配置文件说明:
这次启动一个新的容器
docker run --name lnmp -p 8080:80 -d \
-v /vagrant/docker/nginx/www:/usr/share/nginx/html:ro \
-v /vagrant/docker/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
--link lnmp-php:php \
nginx
接下来我们在 /vagrant/docker/nginx/www 目录下创建 index.php,并把之前的 index.html 删掉,index.php 输入以下内容
echo phpinfo();
浏览器访问,注意这个容器映射的是 8080 端口,http://192.168.33.11:8080/
输出以下界面代表 nginx +php 安装配置成功