一开始没有思路,直接用宝塔一键搭建的Docker
服务器环境:CentOS 7.6
说下体验:
通过安装进度还是有些报错出现的,但是一向“兼容不错的宝塔”还是对他抱有一线希望。
最后还是安装成功了。
装好了,如何使用?
Docker 是基于命令行使用的,那现在通过一些实际问题去使用一些命令!
1.首先查看是否安装成功。通过查看版本好去验证吧!
docker version
运行成功,“宝塔”还是很厉害的。
2.1.Docker 下载 PHP镜像
本来想学习部署go环境的,但是为了避免程序出错,还是选择了熟悉的PHP。建议大家也选择自己熟悉环境,避免坑太多。
Docker是有云镜像的,可以这么理解,所有的环境都可以通过搜索关键词去安装。
docker search php
接下里看到是“php” 相关的搜索结果
结果只列出了相应软件,但是我们需要获得相应的版本号才能更好的去配置,比如:php5.3/php5.4/php5.5/php7.0
通过命令找比较麻烦,目前没有最好的方式,需要的话可以到Docker的官网去查询。
搜索地址:https://hub.docker.com/_/php/tags
当然国内无法访问,那么只有通过“搜索引擎”去了解相应版本号了
docker pull php:7.4-fpm
获取PHP镜像,后面的数字可以指定PHP的版本,目前安装的是PHP7.4
docker images
查看安装的镜像列表
docker images php
查看php的信息
在这里 IMAGE ID 是一个重要信息,通过前几位例如“38f2”来创建容器
2.3.创建容器,Docker 部署 PHP容器
现在我们需要创建PHP的容器,并且启动PHP。
docker run --name php-test -v /usr/local/nginx/html:/www -p 9000:9000 -d 38f2
命令解释
- docker run : 是创建一个新容器并运行一个命令
- --name : 给容器起一个名字,指的是 php-test
- -p : 指定宿主机与容器内部端口的映射关系,-p [宿主机端口]:[容器内部端口],我设置的是 9000:9000,注意测试80端口是还容易冲突。
- -d : 设置容器在在后台一直运行
- 最后面的 PHP 是镜像名称,也可以是镜像ID,例如上面提到的 “38f2”
docker rm php-test
以上为删除容器,由于端口有冲突,需要删除从新创建。
容器安装完毕
再次需要注意的是端口冲突和端口安全组规则,一般没问题,此处需要注意
3.1 nginx的配置,与PHP类似,不懂可反复查看PHP
docker search nginx
查看Nginx的镜像列表
docker pull nginx
获取Nginx 镜像
docker run --name nginx-test -p 8089:8089 -d nginx
启动容器,在宝塔面板“安全”内,做放行处理,否则会有端口冲突。
docker ps
查看正在运行的容器
docker ps -a
查看所有容器
docker stop 4a9015fc1b2a
停止容器,4a9015fc1b2a是CONTAINER ID,通过“docker ps”查看
docker start 6414e8b2ee30
运行容器,6414e8b2ee30是CONTAINER ID,通过“docker ps”查看
在此nginx安装上了,但是通过外网是无法访问的。
在此卡壳了,为了打开思路,下面继续了解下nginx配置相关的内容了,带着“端口”相关的疑惑继续配置吧!
修改nginx的配置文件
nginx是在docker中配置的,所有也是需要在docker中修改的。
docker exec -it 641 /bin/bash
进入nginx容器命令行
命令解释
- docker exec : 在运行的容器中执行命令。
- -it : -i和-t两个参数配合使用,开启一个交互模式的终端。
- 641 : 名称为nginx-test容器ID。
- /bin/bash : 指定了执行命令的shell。
exit
退出容器命令行
docker cp 6414:/etc/nginx/nginx.conf /usr/docker/nginx
docker cp
6414:/etc/nginx/conf.d/default.conf /usr/docker/nginx/conf/
6414 为容器ID,复制容器内的文件到外部。
docker run --name nginx-config -p 8089:8089 \
-v /usr/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/docker/nginx/logs:/var/log/nginx \
-v /usr/docker/nginx/html:/usr/share/nginx/html \
-v /usr/docker/nginx/conf:/etc/nginx/conf.d \
--privileged=true -d nginx
从新配置一个容器,并将它的一些文件镜像主机,方便编辑
一些小插曲
就目前为止,容器的部署,启动,关闭,卸载,进程查看都没问题了,但是最后Nginx 始终不能正常访问,在此抛下疑问寻找突破点。
1.docker下的进程能否在shell下查看
2.nginx 删除 配置文件是否会报错,(算是互动了解了,因为就目前为止只知道安装了,但是没看到任何有迹可循的思路,哪怕是报错都没有。)
3.翻阅现有站点对nginx 配置文件做对比。(这个思路还是不错的,好歹有个参考点)
通过常规方式新建了一个站点,确保了一个端口是开放的,这下可以排除端口限制的问题了。
从新配置一个容器
docker run --name nginx-test-two -p 8090:8090 -d nginx
还是不行
下面nginx配置文件做对比,还是要先了解nginx的配置文件。
最后找到原因,nginx默认生成的配置文件“default.conf”端口不对,为啥是80呢(坑)
修改为8089后可以正常访问了。
通过nginx访问php
通过走上面的弯路还有一些坑,我想下面应该会顺利些了。
首先删除销毁之前配置的容器,这些请看上边的,停止--》删除容器
PHP配置
docker run --name php-test -v /usr/local/nginx/html:/www -p 8089:8089 -d 38f
新建php模块,注意 -d 是镜像ID,通过 docker images 查看
- -v: 挂载目录, 此处
/usr/local/nginx/html
目录为宿主机存放文件目录,/www
为PHP容器内存放文件目录。
Nginx配置
在此卡壳,配置完成 提示成功还是无法访问PHP文件,静态文件可以访问。
发表评论 取消回复