1. Docker安装
参考官方推荐的方法安装Docker
https://docs.docker.com/engine/install/centos/#install-using-the-repository
1.1 设置存储库
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
抛出异常
Loaded plugins: fastestmirror
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/doc ker-ce.repo
Could not fetch/save url https://download.docker.com/linux/centos/docker-ce.repo to file /etc/yum.repos.d/docker-ce.repo: [Errno 12] Timeout on https://download.docker.com/linux/centos/docker-ce.repo: (28, 'Operation timed out after 30000 milliseconds with 0 out of 0 bytes received')
换源
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.2 安装Docker最新版本
sudo yum install docker-ce docker-ce-cli containerd.io
1.3 启动Docker
sudo systemctl start docker
1.4 通过运行hello-world 映像来验证是否正确安装了Docker Engine 。
sudo docker run hello-world
image.png
运行以上信息说明安装成功
如果进行pull失败, 可以换国内源
Docker 官方中国区
https://registry.docker-cn.com
网易
http://hub-mirror.c.163.com
中国科技大学
https://docker.mirrors.ustc.edu.cn
阿里云
https://pee6w651.mirror.aliyuncs.com
修改源
vim /etc/docker/daemon.json
添加以下内容
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
2. PHP安装
php镜像
https://hub.docker.com/_/php?tab=tags&page=1&ordering=last_updated
发行版本说明
https://www.debian.org/releases/
找到稳定版本的php-fpm版进行安装,我这边安装的是php7.4
docker pull php:7.4.19-fpm-buster
3. 安装nginx
nginx镜像
https://hub.docker.com/_/nginx?tab=tags&page=1&ordering=last_updated
同样找到稳定版本进行安装
docker pull nginx:stable-perl
查看已经安装好的镜像
docker image ls
image.png
4. 新建Docker挂载文件夹(根据自己需求存放)
cd /
mkdir docker
cd docker
mkdir php # php配置等信息
mkdir nginx # nginx配置等信息
mkdir www # 存放网页代码
5. 运行一个PHP测试容器,目的拷贝出默认配置文件
docker run --name myphp-fpm -d bfdbfe3debeb
查看运行中的容器
docker ps
image.png
将php容器内的配置文件拷贝到主机中,这里粗暴的直接将整个文件夹拷贝出来
docker cp d47ae217641f:/usr/local/etc /docker/php
cp命令会将容器etc目录拷贝到/docker/php/etc下,强迫症手动将etc目录里的内容全部移动到php下,然后删除了etc文件夹
image.png6. 运行一个Nginx测试容器,目的同样拷贝出默认配置文件
docker run --name mynginx -d 56e67f61e79c
查看运行中的容器
docker ps
image.png
docker cp a2167091f8a7:/etc/nginx /docker
image.png
7. 删除测试容器
# 停止容器
docker stop d47ae217641f
docker stop a2167091f8a7
# 删除容器
docker rm d47ae217641f
docker rm a2167091f8a7
8. 创建正式容器
创建php容器
docker run -idt --name myphp-7.4.19-fpm-buster -v /docker/php:/usr/local/etc:ro -v /docker/www/:/var/www/html/ bfdbfe3debeb
--name 容器名称
-v 挂载目录
-i 以交互模式运行容器,通常与 -t 同时使用;
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-d 后台运行容器,并返回容器ID;
创建nginx容器
docker run -idt --name mynginx-stable-perl -p 80:80 -p 443:443 -v /docker/nginx:/etc/nginx:ro -v /docker/log/nginx:/var/log/nginx -v /docker/www/:/usr/share/nginx/html --link myphp-7.4.19-fpm-buster:php 56e67f61e79c
/docker/www
新建一个html文件
image.png
image.png
浏览器访问,查看是否运行成功
image.png
修改Nginx配置
/docker/nginx/conf.d/default.conf
server {
listen 80;
listen [::]:80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
# nginx访问目录,这里需要注意,目录设置的是nginx容器的目录
root /usr/share/nginx/html;
index index.html index.htm;
autoindex off;
}
location ~ \.php$ {
# php:9000 对应之前运行容器时的命令 --link myphp-7.4.19-fpm-buster:php,端口号是php容器的端口
fastcgi_pass php:9000;
fastcgi_index index.php;
# php访问目录,这里需要注意,目录设置的是php容器的目录
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}
}
安装php常用扩展
redis扩展
进入php容器
docker exec -it 9a078e7f3e99 bash
安装常用工具包
apt-get update && apt-get install make cmake gcc g++ bison libncurses5-dev build-essential vim autoconf
如果 apt-get update命令卡可以换成阿里云镜像
sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list
apt-get clean
apt-get update
安装redis扩展
pecl install igbinary
pecl install lzf
pecl install zstd
pecl install redis
安装pdo_mysql扩展(自带)
docker-php-ext-install pdo_mysql
添加扩展配置文件
/docker/php/php/conf.d/redis.ini
extension=igbinary.so
extension=lzf.so
extension=zstd.so
extension=redis.so
/docker/php/php/conf.d/pdo_mysql.ini
extension=pdo_mysql
重启php容器
docker restart 9a078e7f3e99
查看phpinfo()
image.png安装完成!
网友评论