Docker - php環境搭建,並通過nginx反向代理

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,列舉出所有的版本,複製下載命令
在這裏插入圖片描述

可能出現問題
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等,但是核心基礎不會改變。
文章中有些詳細的命令,和參數沒做講解,因爲都有對應的官方文檔,官方文檔很重要,一定要仔細閱讀。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章