首先先在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目录下的到本地
docker cp php:/usr/local/etc H:/docker/php
#复制nginx下面的配置文件
docker cp nginx:/etc/nginx/ H:/docker/nginx
现在看 windows10 H盘 的本地目录是否有nginx php的配置以及目录文件了!
有文件以后,然后在kitematic上手动删除这2个容器,或者使用下面的命令:
docker rm
或者删除全部容器命令
docker rm $(docker ps -a -q)
删除完以后,在kitematic界面上就没有刚刚那2个容器了,再使用命令行创建容器,挂载目录!
直接点击 kitematic 上的 DOCKER CLI 进入命令行,如下图:
# 创建并运行容器php(命令如下)
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(命令如下)
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地址:
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里面的内容就可以生效了!
这只是在windows10环境下配置的 nginx + php 环境最常见问题解决方法,linux主机未测试。有喜欢折腾的朋友可以去测试下。
#查看镜像列表
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