首先我们需先安装docker环境,这个比较简单,以centos7为例
docker在centos7上安装需要系统内核版本3.10+,可以通过uname -r查看内核版本号,如果版本不符请自行查阅资料更换。
准备好之后使用以下命令安装docker服务
yum install -y docker
安装完成后启动docker服务,下面是docker启动、停止、重启等命令
systemctl restart docker #重启sy焚书坑儒stemctl stop docker #停止systemctl start docker #启动systemctl enable docker #开机自启动systemctl status docker #服务状态
至此docker服务就准备好了,我们可以通过docker -v查看docker版本
然后我们使用docker搭建php环境
我们先简单介绍一下docker的一些常用命令,如下所示:
#从docker镜像仓库搜索镜像,示例docker arch mysqldocker arch [需要查找的镜像名] #拉取远程镜像到本地,示例docker pull mysql:5.7.23docker pull [镜像名]:[版本号]#自定义创建一个镜像,注意需要当前目录下有一个dockerfile文件#注意结尾处有个 “.”是必须的docker build -t [自定义镜像名] .#查看本地镜像,可以看到镜像名,镜像id,版本号,创建时间及镜像大小docker images#删除镜像,需注意删除的镜像要没有container占用,镜像id不用全部输入完整#示例docker image rm 7bcdocker image rm [镜像id]#查看所有container及详情,可以看到容器名,容器id、容器状态等信息docker ps -a#启动容器,容器id也不需要写全,示例docker start 88ddocker start [容器id]#停止容器docker stop [容器id]#重启容器docker restart [容器id]#创建一个镜像,后续会对详细说明docker run [参数1] [参数2] ... 镜像名#进入容器内部交互docker exec -it [容器名/容器id] /bin/bash
整个docker环境流程大致可以理解为三步,获取镜像->创建容器->运行容器。
下载php镜像,php-fpm
首先我们需要一个php的镜像,镜像获取有两种方式,一种是直接获取docker镜像库里面已有的镜像,另一种是自己编辑dockerfile文件自定义一个镜像,首先我们采用第一种方式,因为比较简单,后面再说第二种方式
我们使用docker pull 拉去一个已有的php镜像,这里我推荐 leleos/php-fpm:7.1 镜像,基本能使用上的扩展都配置好了
docker pull leleos/php-fpm:7.1
构建nginx镜像
之前我们是直接下载别人的镜像拿来用,这次我们自己使用dockerfile文件创建一个自定义的镜像,首先在目录下创建一个 “dockerfile” 文件(建议dockerfile作为文件名),写入以下内容
#设置容器基础镜像,这里我们以centos系统为基础镜像from hub.c.163.com/public/centos:latest#设置作者信息maintainer taurus12c<1402410174@qq.com>#安装依赖run rpm --rebuilddb && yum install -y autoconf automake make wget proc-devel net-tools zlib zlib-devel make gcc g++ openssl-devel pcre pcre-devel tar#下载nginx软件压缩包run wget /d/file/titlepic/nginx-1.17.1.tar.gz # 解压到当前目录run tar -zxvf nginx-1.17.1.tar.gz # 设置当前操作目录workdir nginx-1.17.1 # 配置nginxrun ./configure --prefix=/usr/local/nginx && make &&台风天兔; make installrun rm -rf ../nginx* && yum clean all \ && echo "${time_zome}" > /etc/timezone \ && ln -sf /usr/share/zoneinfo/${time_zome} /etc/localtime # 设置当前操作目录workdir /usr/local/nginx #暴露容器端口expo 80 #启动容器后执行语句cmd ["./sbin/nginx","-g","daemon off;"]
这里我们大致说一下上面文件的命令含义,注意命令必须全部大写
from —— 设置基础镜像
maintainer —— 设置这个dockerfile的作者信息
run —— 这个比较关键,就是你接下来对于容器的配置或者是依赖的一步步操作,因为这里我们是创建一个nginx的镜像,所以上面的run操作都是在容器里面安装nginx服务
workdir —— 设置当前操作容器内的路径,类似于cd操作
expo —— 这个是给容器暴露端口让宿主机完成映射
cmd —— 这是容器创建启动后自动执行的命令,这里的命令是启动nginx服务的意思
其他的命令可以去查阅资料自行了解,这里我们只讲解这些,让大家有个概念
编辑好了之后我们在当前目录下执行build来构建一个镜像,如果你的文件是dockerfile直接执行就好了。注意后面的 “.”不要忘了
docker build -t nginx .
执行完毕之后我们使用 docker images 查看本地镜像已经有了nginx和leleos/php-fpm两个镜像了。然后我们就可以使用容器创建一个php的环境运行php项目了
创建dcoker自定义网络
有的时候我们需要容器之间能够连接,比如nginx就需要使用fpm,但是nginx和leleos/php-fpm不在一个容器内,这个时候我们就需要想办法让容器之间能互相访问,这里有几种办法
1、在启动容器时使用 –link实现容器之间的连接,然后在nginx容器内修改nginx配置文件里面的fastcgi_pass对应地址
2、获取到php-fpm容器的内网ip,然后在nginx容器内修改nginx配置文件里面的fastcgi_pass对应地址
3、创建docker自定义网络,然后在nginx容器内修改nginx配置文件里面的fastcgi_pass对应地址
这里作者推荐使用第三种方法,其他两种如果需要可以自行了解
创建docker自定义网络命令,docker network create [网络组名称]
docker network create lnmp
执行之后我们可以用docker network ls 查看刚刚创建的网络组
创建容器,使用docker搭建php环境
上面说了那么多都是准备工作,现在我们正式把环境搭建起来
创建nginx容器
docker run -itd --name nginx --network lnmp -p 80:80 -v /var/www/html:/var/www/html -v /usr/local/nginx/conf/vhost:/usr/local/nginx/conf/vhost nginx
解释一下上面指令的意思
docker run:创建启动一个容器
-itd:这里是缩写,对应 -i -t -d ,-i 交互式操作、-t 终端 、-d后台运行
–name:给容器指定名称
–network:给容器指定网络组
-p:映射宿主机与容器内的端口
-v:给容器挂载目录,通俗理解来说就是给容器加了个存储文件的空间,并且空间内的文件宿主机和容器是共用的。这里我挂载了两个目录,一个是项目目录html,一个是配置文件目录vhost,这样就不用进入容器内就能修改了
nginx:指定容器使用的镜像为nginx镜像
创建php服务容器
docker run -itd --name php-fpm --network一度电多少千瓦 lnmp -p 9000:9000 -v /var/www/html:/var/www/html leleos/php-fpm:7.1
需要注意的是项目目录需要nginx和php容器配置在体哦那个一个目录下。至此我们容器也启动了,可以通过docker ps -a 查看我们刚刚创建并启动的容器状态。
到了这里还没完还有最后一步操作,那就是进行正确的nginx配置。首先我们进到nginx容器里面docker exec -id [容器名/容器id] /bin/bash
docker exec -it nginx /bin/bash
输入上面这段命令我们就能进入到nginx容器里面,如果需要退出返回到宿主机里面,只需要在容器内输入exit就可以了
进入/usr/local/nginx/conf目录编辑nginx.conf文件,文件内容如下
#ur nobody;worker_process 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_ur [$time_local] "$request" ' # '$status $body_bytes_nt "$http_referer" ' # '"$http_ur_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; ndfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; rver { listen 80; rver_name localhost; #域名 index index.html index.htm index.php; root /var/www/html; #这里填写刚刚挂载的项目目录 #chart koi8-r; #access_log logs/host.access.log main; #error_page 404 /404.html; # redirect rver error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the php scripts to apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the php scripts to fastcgi rver listening on 127.0.0.1:9000 # location ~ \.php$ { root html; fastcgi_pass lnmp_php:9000; #这里注意使用php容器的网络组内端口,我们创建php容器时使用的网络组和映射的端口 fastcgi_param script_filename /var/www/html$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } include /usr/loca/nginx/conf/vhost/*.conf; #这里是我们挂载配置文件目录地址,这样我们添加新的项目就不需要到容器内来修改nginx.conf文件,只需要在宿主机上修改重启容器即可 # another virtual host using mix of ip-, name-, and port-bad configuration # #rver { # listen 8000; # listen somename:8080; # rver_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # https rve庶的意思r # #rver { # listen 443 ssl; # rver_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_ssion_cache shared:ssl:1m; # ssl_ssion_timeout 5m; # ssl_ciphers high:!anull:!md5; # ssl_prefer_rver_ciphers on; # location / { # root html; # index index.html index.htm; # } #}}
编辑好了之后我们重载nginx配置文件,进入/usr/local/nginx/sbin目录下执行 ./nginx reload 。然后退出容器exit
进入/var/www/html目录下创建index.php测试一下换进是否搭江南风光建成功,index.php文件内写入
<?php echo 'hello world!';
打开浏览器访问服务器地址或域名,如果输出”hello world!“就代表环境搭建成功
其他
至此我们已经掌握了docker的一些用法,可以尝试自己搭建redis、mysql等服务容器啦,如果遇到什么问题可以在下方给我评论,或者加我们的交流群扣群:735713840(备注博客园)进行询问
本文发布于:2023-04-07 19:53:41,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/35ebc190843b25dbd6d42e27ca509424.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Docker入门 – 安装docker并使用docker搭建PHP环境,初步了解Dockerfile.doc
本文 PDF 下载地址:Docker入门 – 安装docker并使用docker搭建PHP环境,初步了解Dockerfile.pdf
留言与评论(共有 0 条评论) |