您的位置:首页 > 运维架构 > Docker

2019最新在windows10下 安装docker 使用kitematic并且配置nginx+php环境

2019-04-22 11:57 465 查看

首先先在windows10上新建2个文件夹。用来挂载nginx 和php的网站以及其他配置文件

H:\docker\nginx

H:\docker\php

首先下载最新版本的kitematic  下载地址:https://kitematic.com

注意入坑,千万别再docker右击kitematic 直接下载安装,因为docker上的kitematic 连接是老版本的,很多BUG没修复,可能导致下载不了镜像等很多问题。所以一定 要进去官网下载最新版本才可以正常使用!

下载好了以后 直接搜索 nginx ,注意 nginx官方版本是画红圈的那个,第一个是docker官方放出的版本。我使用的是画红圈的,

点击CREATE,下载安装镜像,php操作方案一样!如果要选版本点击CREATE左边的三个点进行自己想要的版本勾选再下载镜像安装容器!(如下图)

把nginx和php 都安装完成后。复制镜像里面的配置等目录到本机硬盘来。

#复制php目录下的到本地
 

[code]docker cp php:/usr/local/etc H:/docker/php

#复制nginx下面的配置文件
 

[code]docker cp nginx:/etc/nginx/ H:/docker/nginx

现在看 windows10 H盘 的本地目录是否有nginx php的配置以及目录文件了!

有文件以后,然后在kitematic上手动删除这2个容器,或者使用下面的命令:  

[code]docker rm 

或者删除全部容器命令 

[code]docker rm $(docker ps -a -q)

删除完以后,在kitematic界面上就没有刚刚那2个容器了,再使用命令行创建容器,挂载目录!

直接点击 kitematic 上的 DOCKER CLI 进入命令行,如下图:

# 创建并运行容器php(命令如下)
 

[code]docker run -p 9001:9000 --name myphp -v H:/docker/php/etc:/usr/local/etc -v H:/docker/nginx/html:/var/www/html -d php:7.2.17-fpm-alpine

命令解释 :

-p : 该参数设置端口对应的关系。所有访问宿主机9001端口的会转发到php容器的9000端口。

-name: 给这个容器创建一个名称我就叫 myphp

-v : 宿主机与容器的映射,把php容器的配置文件映射到本机的H盘里面来

-d : 该参数为后台运行之意

不明白的可以去自行学习下docker的命令参数

# 创建并运行容器nginx(命令如下)

[code]docker run --name mynginx -p 81:80 -v H:/docker/nginx/html:/usr/share/nginx/html:ro -v H:/docker/nginx/log:/var/log/nginx -v H:/docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro --link myphp:php -d nginx

这里的 --link 意思是把nginx跟上面定义的myphp连接起来。不懂可以查看docker命令行

然后查看2个容器分别都启动成功了,但是别急现在还是不可以直接访问php文件的。只可以访问静态文件,那么怎么访问php文件呢。这里是重点,我看网上很多人都说的很模糊或者不成功的。下面仔细说下。

首先打开 H:\docker\nginx\nginx\conf.d 目录下的 default.conf 默认配置文件,如下图:画红框的都是网上所说的配置或者nginx默认配置,只有画绿框的可以成功运行php,为什么?如果平时在一台linux主机上画红圈的配置肯定可以成功执行,因为这里 nginx 跟 php 是2个单独的分开的容器,所以画红圈的地方配置是解析不了php网站的目录的,所以会报错404或者找不到文件之类的错误。这里的 172.17.0.2 ip地址可以通过命令查询php容器的ip地址:

[code]docker inspect --format='{{.NetworkSettings.IPAddress}}' myphp

现在访问index.php  可以运行了:

 

为什么修改 /usr/local/etc/php 下面的 php.ini 不生效呢,我们在phpinfo上看见 php.ini 归属在 /usr/local/etc/php 这个目录里面 所以,我们把 H:\docker\php\etc 目录下的 php.ini 剪切复制到  H:\docker\php\etc\php 下面即可。如下图:现在修改php.ini里面的内容就可以生效了!

 

总结注意3个地方 

1.你的nginx运行的网站目录一定要跟php的网站目录一样。

2.你的php fastcgi_pass 一定要可以让nginx访问。

3.你的fastcgi_param目录一定要改成你php网站目录的,而不是你nginx的网站目录,不然fastcgi解析不了nginx目录,因为2个是不同的容器

这只是在windows10环境下配置的 nginx + php 环境最常见问题解决方法,linux主机未测试。有喜欢折腾的朋友可以去测试下。

Docker 常用命令集:

[code]
#查看镜像列表
docker images
#删除单个镜像
docker rmi image-id(image-id就是你镜像的id)
#删除所有镜像
docker rmi $(docker images -q)
#强制删除单个镜像
docker rmi -f image-id(image-id就是你镜像的id)
#查看运行中的容器
docker ps
#查看所有容器
docker ps -a
#停止单个容器
docker stop container-id(container-id就是你容器的id)
#停止所有容器
docker stop $(docker ps -a -q)
#删除单个容器
docker rm container-id(container-id就是你容器的id)
#删除所有容器
docker rm $(docker ps -a -q)
#进入容器
docker exec -it (container-id就是你容器的id) bash
#查看镜像、容器、数据卷所占用的空间。
docker system df

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐