Docker - php环境搭建,并通过nginx反向代理

目录

  • 0、引言
  • 1、安装及卸载
    • 1.1 安装
      • 使用 Docker 仓库进行安装
      • 设置仓库
      • 使用以下命令来设置稳定的仓库
      • 安装 Docker Engine-Community
      • 启动
    • 1.2 卸载
  • 2、拉取镜像,创建容器
    • 2.1 拉取镜像
    • 2.2 创建容器
  • 3、容器搭建 centos7 + apache + php7.4
  • 4、服务器使用 nginx 代理到各个容器
  • 5、总结

0、引言

docker经验整理,技术一定要实践,总结,’难者不会,会者不难‘。
话不多说,搞起 :
1,安装及卸载
2,拉取镜像,创建容器
3,容器搭建 centos7 + apache + php7.4
4,服务器使用 nginx 代理到各个容器

1、安装及卸载

1.1 安装

使用 Docker 仓库进行安装

设置仓库

安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

使用以下命令来设置稳定的仓库

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装 Docker Engine-Community

安装最新版本的 Docker Engine-Community 和 containerd

yum install -y docker-ce docker-ce-cli containerd.io

启动

systemctl enable docker		//开机启动
systemctl start docker		//启动
systemctl stop docker		//停止
systemctl restart docker	//重启

1.2 卸载

卸载主要使用三个命令

  • 查询安装过的包
yum list installed | grep docker
  • 删除安装的软件包
yum -y remove docker-ce.x86_64 docker-ce-cli.x86_64 
  • 删除镜像/容器等
rm -rf /var/lib/docker

我的执行结果 :

2、拉取镜像,创建容器

2.1 拉取镜像

  • 搜索镜像:docker search 镜像名称
docker search centos

  • 拉取镜像:docker pull 镜像名称:标签
//不加tag,会拉取最新 tag:latest

docker pull centos
等价于
docker pull centos:latest
  • 删除镜像:docker rmi 镜像名称:标签
docker rmi centos:latest
  • 怎么拉取指定版本?

如果需要指定版本可以前往 https://hub.docker.com 搜索对应镜像的所有tag,选择下载

比如:搜索 centos 点击想要的镜像来源, 点击Tags,列举出所有的版本,复制下载命令
Docker - php环境搭建,并通过nginx反向代理_第1张图片

可能出现问题
a. Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
b. 镜像拉取慢(docker pull)
解决方法
修改镜像源

//1.编辑文件 /etc/docker/daemon.json 有则修改,没有则创建
vi /etc/docker/daemon.json
//2.将以下代码加入到文件中,我使用的是阿里源
{
     
  "registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"]
}
//3.保存  
:wq
//4.重启docker
systemctl restart docker

2.2 创建容器

  • 查看镜像
docker images
  • 创建容器
docker run -d --name phpdev1 \
-v /mnt/www/test.jocker.com:/var/www/html \
-p 0.0.0.0:90:90/tcp \
--privileged \
centos:7.7.1908 \
/usr/sbin/init 

这里的创建命令主要针对 centos ,其他容器会有所调整

  • 查看容器
docker ps 		//运行中的容器
docker ps -a 	//所有容器
  • 容器操作相关命令
docker start   容器id 容器id ...	//启动一个或多个已经被停止的容器
docker stop    容器id 容器id ...	//停止一个或多个运行中的容器
docker restart 容器id			//重启容器
docker rm 	   容器id			//删除已经被停止的容器

我的执行结果 :
在这里插入图片描述

3、容器搭建 centos7 + apache + php7.4

centos7 我们已经拉取下来并且创建好容器了,下面就是进入容器,搭建环境

  • 进入容器
docker exec -it 容器id  /bin/bash
docker exec -it 81f3cbd1c65e /bin/bash  //我的操作记录
  • yum 安装相应扩
//1. apache
yum -y install httpd			//yum安装
vi /etc/httpd/conf/httpd.conf 	//修改Listen 端口为创建容器时指定的端口90


systemctl enable httpd			//开机启动
systemctl start httpd			//运行apache

//2. php7.4
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

yum -y install yum-utils
yum-config-manager --enable remi-php74
yum -y  install php php-cli

yum -y  install php  php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json

4、服务器使用 nginx 代理到各个容器

  • 创建多个容器
    因为这个容器的环境已经配置好了,可以将这个容器commit为镜像保存,做为一个基础的环境镜像。可以通过这个镜像直接生成新的容器。
    添加新的容器,只需要修改httpd.conf 的 Listen ,容器绑定的端口即可。
docker commit 容器id 镜像名称:版本			//通过容器 创造 镜像
docker commit 81f3cbd1c65e  basedev:v1  //我的操作
  • 修改服务器上nginx配置文件,添加server,大概如下
vim /etc/nginx/nginx.conf

//添加新的 server
server {
     
    listen 91;
    server_name  test1.joker.com;
    location / {
     
    	proxy_pass http://localhost:91;
    }
}
server {
     
    listen 92;
    server_name  test2.joker.com;
    location / {
     
    	proxy_pass http://localhost:92;
    }
}

5、总结

本次主要记录总结了下,自己搭建docker环境,遇到的问题,实际业务中的架构会比这更复杂,会有很多变化,负载,K8s等,但是核心基础不会改变。
文章中有些详细的命令,和参数没做讲解,因为都有对应的官方文档,官方文档很重要,一定要仔细阅读。

你可能感兴趣的:(docker,docker,nginx,php,app,apache)