一、安装基础环境
1.升级yum
yum -y update
2.安装必要插件
yum -y install wget zip unzip net-tools procps-ng vim telnet yum-utils
3.修改服务器时区
设置上海时区并设置自动更新时间 查看当前时区设置
timedatectl
如果不是Asia/Shanghai,则需要修改时区为上海 设置自动同步时间
yum install -y ntpdate
ntpdate -u cn.pool.ntp.org
设置为北京时间
timedatectl set-timezone Asia/Shanghai
4.安装docker和图形化界面
-
安装底层工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
-
加入阿里云yum仓库提速docker下载过程
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
更新⼀下仓库的源信息
sudo yum makecache fast
-
⾃动安装下载Docker
sudo yum -y install docker-ce
启动Docker服务
sudo service docker start
设置docker为自启动
systemctl enable docker
验证docker是否启动成功
systemctl status docker
-
拉取portainer镜像
docker pull portainer/portainer:latest
-
安装并启动一个portainer容器
汉化版下载
docker run -d \
--name=portainer-zh \
-p 9100:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart=always \
6053537/portainer-ce
# 使用docker run命令以守护进程模式(-d)运行一个新的容器 docker run -d # 为容器指定一个名称,这里命名为fus_portainer --name fus_portainer # 将宿主机的9090端口映射到容器的9000端口,使得可以通过宿主机的9090端口访问到容器内的Portainer服务 -p 9090:9000 \ # 将宿主机的docker socket文件挂载到容器内的相同位置,这样Portainer就可以管理宿主机上的Docker容器和镜像了 -v /var/run/docker.sock:/var/run/docker.sock \ # 设置容器总是自动重启,即使容器退出也会尝试重新启动 --restart always \ # 赋予容器特权模式,允许容器访问宿主机上的设备 --privileged=true \ # 指定要运行的镜像名称和版本,这里是Portainer的官方镜像 portainer/portainer
5.安装docker-compose
sudo yum install -y epel-release
sudo yum install -y python-pip
sudo yum -y install docker-compose
二、安装nginx+php
1.下载镜像
docker pull php:7.1-fpm
docker pull nginx:1.21
docker images
2.编写 docker-compose 文件
mkdir -p /usr/local/docker
cd /usr/local/docker
mkdir php71
cd php71/
vim docker-compose.yml
-
docker-compose 中的内容
# 指定 compose 版本
version: '3.1'
# 定义服务信息
services:
# php71 表示服务名称
php71:
# 使用的镜像
image: 'php:7.1-fpm'
# restart: 定义重启策略
# no:是默认的重启策略,在任何情况下都不会重启容器。
# always:容器总是重新启动。
# on-failure:在容器非正常退出时(退出状态非0),才会重启容器。
# unless-stopped:在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器
restart: unless-stopped
# 自定义容器名
container_name: php71_container
# 使 container 内的 root 拥有真正的 root 权限,不加则 container 内的 root 只是外部的一个普通用户权限。
privileged: true
# 设置宿主机和容器之间的端口映射关系
ports:
- '9000:9000'
# 数据卷,定义映射关系,将目录或文件挂载到容器
volumes:
- /usr/local/docker/php71/www:/usr/share/nginx/html
- /usr/local/docker/php71/php:/usr/local/etc/php
# 设置环境变量(TZ=Asia/Shanghai:设置时区)
environment:
- TZ=Asia/Shanghai
# 定义网络信息,详细的可以去这里看看 https://deepzz.com/post/docker-compose-file.html#toc_31
networks:
- airvip
nginx121:
image: 'nginx:1.21'
restart: unless-stopped
container_name: nginx_container
# 使 container 内的 root 拥有真正的 root 权限,不加则 container 内的 root 只是外部的一个普通用户权限。
privileged: true
ports:
- '8889:80'
volumes:
- /usr/local/docker/php71/www:/usr/share/nginx/html
- /usr/local/docker/php71/nginx/conf.d:/etc/nginx/conf.d
- /usr/local/docker/php71/logs/nginx:/var/log/nginx
environment:
- TZ=Asia/Shanghai
networks:
- airvip
# 设置依赖关系,可以让 docker-compose 按依赖关系启动
depends_on:
- php71
networks:
airvip:
3.创建必要的目录与文件
mkdir -p nginx/conf.d
cd nginx/conf.d
vim default.conf
编写default中的内容
server {
listen 80 default_server;
server_name localhost;
root /usr/share/nginx/html;
location / {
index index.html index.htm index.php;
}
location ~ \.php$ {
fastcgi_pass php71:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
4.编写个 php 测试信息页
cd ../../
mkdir www
cd www
vim index.php
-
下面是 index.php 中的内容
<?php phpinfo();
5.启动 php71 nginx121 服务
cd ..
docker-compose up -d
docker ps
docker-compose stop
docker-compose start
docker-compose restart
7.验证(windows浏览器)
localhost:8889