1. Docker安裝
參考官方推薦的方法安裝Docker
https://docs.docker.com/engine/install/centos/#install-using-the-repository
1.1 設(shè)置存儲庫
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

運行以上信息說明安裝成功
如果進行pull失敗, 可以換國內(nèi)源
Docker 官方中國區(qū)
https://registry.docker-cn.com
網(wǎng)易
http://hub-mirror.c.163.com
中國科技大學(xué)
https://docker.mirrors.ustc.edu.cn
阿里云
https://pee6w651.mirror.aliyuncs.com
修改源
vim /etc/docker/daemon.json
添加以下內(nèi)容
{
"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
發(fā)行版本說明
https://www.debian.org/releases/
找到穩(wěn)定版本的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
同樣找到穩(wěn)定版本進行安裝
docker pull nginx:stable-perl
查看已經(jīng)安裝好的鏡像
docker image ls

4. 新建Docker掛載文件夾(根據(jù)自己需求存放)
cd /
mkdir docker
cd docker
mkdir php # php配置等信息
mkdir nginx # nginx配置等信息
mkdir www # 存放網(wǎng)頁代碼
5. 運行一個PHP測試容器,目的拷貝出默認配置文件
docker run --name myphp-fpm -d bfdbfe3debeb
查看運行中的容器
docker ps

將php容器內(nèi)的配置文件拷貝到主機中,這里粗暴的直接將整個文件夾拷貝出來
docker cp d47ae217641f:/usr/local/etc /docker/php
cp命令會將容器etc目錄拷貝到/docker/php/etc下,強迫癥手動將etc目錄里的內(nèi)容全部移動到php下,然后刪除了etc文件夾

6. 運行一個Nginx測試容器,目的同樣拷貝出默認配置文件
docker run --name mynginx -d 56e67f61e79c
查看運行中的容器
docker ps

docker cp a2167091f8a7:/etc/nginx /docker

7. 刪除測試容器
# 停止容器
docker stop d47ae217641f
docker stop a2167091f8a7
# 刪除容器
docker rm d47ae217641f
docker rm a2167091f8a7
8. 創(chuàng)建正式容器
創(chuàng)建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;
創(chuàng)建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文件


瀏覽器訪問,查看是否運行成功

修改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訪問目錄,這里需要注意,目錄設(shè)置的是nginx容器的目錄
root /usr/share/nginx/html;
index index.html index.htm;
autoindex off;
}
location ~ \.php$ {
# php:9000 對應(yīng)之前運行容器時的命令 --link myphp-7.4.19-fpm-buster:php,端口號是php容器的端口
fastcgi_pass php:9000;
fastcgi_index index.php;
# php訪問目錄,這里需要注意,目錄設(shè)置的是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()

安裝完成!