centos7上用docker安装php和nginx镜像,nginx以unix socket方式连接php
一、Centos7安装Docker
1. 查看内核版本,3.10以下不行:
uname -r
2. 升级系统依赖(看情况,不兼容时再执行也行)
升级所有包同时也升级软件和系统内核
yum -y update
只升级所有包,不升级软件和系统内核
yum -y upgrade
3. 查看Docker版本, 确认是否已安装
docker -v
或者 docker version
4. 移除旧版本
5. 安装必要的依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
6. 添加软件源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
7. 安装Docker-CE(社区免费版)
sudo yum install docker-ce
8. 启动Docker服务
sudo systemctl start docker
9. 设置Docker开机自启动
sudo systemctl enable docker
二、Docker安装镜像
2.1 安装镜像
安装PHP镜像
docker pull php:7.4-fpm
安装Nginx镜像
docker pull nginx
查看安装的镜像
2.2 命令行方式创建容器并运行
创建并运行PHP容器
docker run --name myphp -v /home/php/php-fpm-www.conf:/usr/local/etc/php-fpm.d/www.conf -v /home/php/php.conf:/usr/local/etc/php-fpm.conf -v /home/php/zz-docker.conf:/usr/local/etc/php-fpm.d/zz-docker.conf -v /home/sock:/sock -v /home/html:/usr/share/nginx/html -d php:7.4-fpm
其中,-d参数用于将容器设置为后台运行模式,–name参数用于指定容器名称,-v参数用于将本地目录映射到容器内的目录,php:7.4-fpm则是使用的PHP镜像。
映射php配置文件
-v /home/php/php-fpm-www.conf:/usr/local/etc/php-fpm.d/www.conf
-v /home/php/php.conf:/usr/local/etc/php-fpm.conf
-v /home/php/zz-docker.conf:/usr/local/etc/php-fpm.d/zz-docker.conf
/home/php/php-fpm-www.conf修改如下:
...
listen = /sock/php-fpm.sock
listen.mode = 0666
...
/home/php/zz-docker.conf修改如下:
...
listen = /sock/php-fpm.sock
....
映射项目代码文件(需要与下面的Nginx容器中映射的目录一致)
-v /home/html:/usr/share/nginx/html
共享php的sock文件夹(与Nginx容器启动时的共享目录保持一致)
-v /home/sock:/sock
创建并运行Nginx容器
docker run --name mynginx -v /home/sock:/sock -v /home/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf -v /home/html:/usr/share/nginx/html -p 8088:80 -d nginx:latest
其中,-d参数用于将容器设置为后台运行模式,–name参数用于指定容器名称,-p参数用于将容器内的80端口映射到主机的8088端口上,-v参数用于将本地目录映射到容器内的目录,nginx:latest则是使用的Nginx镜像名
映射配置文件(指定用unix socket的方式连接php)
-v /home/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf
映射项目代码文件(需要与上面的PHP容器中映射的目录一致)
-v /home/html:/usr/share/nginx/html
共享php的sock文件夹(与PHP容器启动时sock文件共享目录保持一致)
-v /home/sock:/sock
2.3 docker-compose方式创建容器并运行
安装Docker Compose
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.16.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
增加可执行权限sudo chmod +x /usr/local/bin/docker-compose
创建软连接sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功docker-compose version
创建yml文件vim /home/docker-compose/docker-compose.yml
内容如下:
version: "3"
services:
nginx:
image: nginx:latest
container_name: "my-nginx"
restart: always
ports:
- "8089:80"
environment:
- TZ=Asia/Shanghai
depends_on:
- "php"
volumes:
- "/home/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf"
- "/home/html:/usr/share/nginx/html"
- "/home/sock:/sock"
php:
image: php:7.4-fpm
container_name: "my-php"
restart: always
environment:
- TZ=Asia/Shanghai
volumes:
- "/home/php/php-fpm-www.conf:/usr/local/etc/php-fpm.d/www.conf"
# - "/home/php/php.conf:/usr/local/etc/php-fpm.conf"
- "/home/php/zz-docker.conf:/usr/local/etc/php-fpm.d/zz-docker.conf"
- "/home/html:/usr/share/nginx/html"
- "/home/sock:/sock"
version: 指定compose版本, 目前主流版本3.x,支持docker1.13.0及以上的版本
services: 定义服务信息
nginx和php: 用户自定义,表示服务名称
image: 镜像名(官方的)
container_name: 容器名称
restart: 定义重启策略 no:是默认的重启策略,在任何情况下都不会重启容器。 always:容器总是重新启动。 on-failure:在容器非正常退出时(退出状态非0),才会重启容器。 unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器.
ports: 设置宿主机和容器之间的端口映射关系
environment: 设置环境变量(TZ=Asia/Shanghai:设置时区)
volumes: 数据卷,定义映射关系,将目录或文件挂载到容器
networks: 定义网络信息
depends_on: 设置依赖关系,可以让docker-compose按依赖关系启动
执行docker-compose,启动服务
docker-compose up -d
// -d 以后台运行的方式启动
停止服务: docker-compose stop
三、扩展
3.1 常用命令
进入容器内部
docker exec -it 容器名称 bash
例如:docker exec -it myphp bash
退出容器内部
ctrl + p +q
查看已有的镜像
docker images
查看已运行的容器
docker ps
可查看历史docker ps -a
启动容器
docker run -d --name 容器别名 -p 主机端口:容器内端口 镜像名
docker run -d --name myphp -p 9999:9000 php:7.4-fpm
停止容器
docker stop 容器名
docker stop myphp
删除容器(数据会丢失)
docker rm 容器名
docker rm myphp
拷贝文件
docker cp 容器名:源路径 主机的目标路径
docker cp 主机的源路径 容器名:目标路径
docker cp myphp:/usr/local/etc/php-fpm.d/www.conf /home/php/php-fpm-www.conf
docker cp /home/php/php-fpm-www.conf myphp:/usr/local/etc/php-fpm.d/www.conf
3.2 容器默认配置文件位置
PHP配置文件
/usr/local/etc/
/usr/local/etc/php-fpm.d/
Nginx配置文件
/etc/nginx/conf.d/
本作品采用《CC 协议》,转载必须注明作者和本文链接