1. Docker安裝
參考官方推薦的方法安裝Docker
https://docs.docker.com/engine/install/centos/#install-using-the-repository
1.1 設(shè)置存儲(chǔ)庫
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 啟動(dòng)Docker
sudo systemctl start docker
1.4 通過運(yùn)行hello-world 映像來驗(yàn)證是否正確安裝了Docker Engine 畔师。
sudo docker run hello-world
運(yùn)行以上信息說明安裝成功
如果進(jìn)行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版進(jìn)行安裝沼填,我這邊安裝的是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)定版本進(jì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. 運(yùn)行一個(gè)PHP測試容器,目的拷貝出默認(rèn)配置文件
docker run --name myphp-fpm -d bfdbfe3debeb
查看運(yùn)行中的容器
docker ps
將php容器內(nèi)的配置文件拷貝到主機(jī)中汁果,這里粗暴的直接將整個(gè)文件夾拷貝出來
docker cp d47ae217641f:/usr/local/etc /docker/php
cp命令會(huì)將容器etc目錄拷貝到/docker/php/etc下践瓷,強(qiáng)迫癥手動(dòng)將etc目錄里的內(nèi)容全部移動(dòng)到php下愧口,然后刪除了etc文件夾
6. 運(yùn)行一個(gè)Nginx測試容器,目的同樣拷貝出默認(rèn)配置文件
docker run --name mynginx -d 56e67f61e79c
查看運(yùn)行中的容器
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 以交互模式運(yùn)行容器欢际,通常與 -t 同時(shí)使用母市;
-t 為容器重新分配一個(gè)偽輸入終端,通常與 -i 同時(shí)使用损趋;
-d 后臺(tái)運(yùn)行容器患久,并返回容器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
新建一個(gè)html文件
瀏覽器訪問浑槽,查看是否運(yùn)行成功
修改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 對(duì)應(yīng)之前運(yùn)行容器時(shí)的命令 --link myphp-7.4.19-fpm-buster:php桐玻,端口號(hào)是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常用擴(kuò)展
redis擴(kuò)展
進(jìn)入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擴(kuò)展
pecl install igbinary
pecl install lzf
pecl install zstd
pecl install redis
安裝pdo_mysql擴(kuò)展(自帶)
docker-php-ext-install pdo_mysql
添加擴(kuò)展配置文件
/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()
安裝完成镊靴!