本篇文章給大家介紹一下linux 下docker的安裝方法,并詳細(xì)了解一下 docker 搭建 lnmp環(huán)境(php7.4 + nginx )的步驟,希望對大家有所幫助!
1. docker基礎(chǔ)
1.1 docker的安裝
docker的安裝非常簡單,我們可以直接使用centos系統(tǒng)中的yum命令進(jìn)行安裝:
yum install -y docker
完成后查看docker的版本信息:
[root@localhost docker]# docker version Client: Version: 1.13.1 API version: 1.26 Package version: docker-1.13.1-204.git0be3e21.el7.x86_64 Go version: go1.10.3 Git commit: 0be3e21/1.13.1 Built: Fri Mar 19 13:57:09 2021 OS/Arch: linux/amd64 Server: Version: 1.13.1 API version: 1.26 (minimum version 1.12) Package version: docker-1.13.1-204.git0be3e21.el7.x86_64 Go version: go1.10.3 Git commit: 0be3e21/1.13.1 Built: Fri Mar 19 13:57:09 2021 OS/Arch: linux/amd64 Experimental: false [root@localhost docker]#
證明安裝完成,docker的命令如下:
systemctl start docker # 啟動docker systemctl stop docker # 停止docker systemctl status docker # 查看docker狀態(tài) systemctl restart docker # 重新啟動docker
sudo systemctl enable docker #設(shè)置docker 開機(jī)自啟
在啟動之前我們需要修改docker的鏡像源:
[root@localhost docker]# vim /etc/docker/daemon.json { "registry-mirrors": ["https://ftnejmh3.mirror.aliyuncs.com"] }
完成后運(yùn)行systemctl start docker,啟動docker服務(wù)。
2. docker搭建lnmp環(huán)境
環(huán)境軟件介紹:
1. docker
2. nginx
3. mysql
4. php7.4 【推薦學(xué)習(xí):《PHP視頻教程》】
docker搭建的lnmp目錄結(jié)構(gòu):
docker │ └── nginx │ │ └── default.conf #nginx配置文件 │ └── www │ └── ... #項(xiàng)目代碼
2.1 docker搭建nginx
我們可以使用docker search nginx命令查找 Docker Hub 上的 nginx 鏡像,這里直接拉取官方的鏡像
[root@localhost ~]# docker pull nginx
等待下載完成后,我們就可以在本地鏡像列表里查到 REPOSITORY 為 nginx 的鏡像。
[root@localhost www]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/nginx latest 62d49f9bab67 12 days ago 133 MB
創(chuàng)建nginx配置
[root@localhost ~]# cd /docker/nginx [root@localhost ~]# touch default.conf [root@localhost ~]# vim default.conf server { listen 80; listen [::]:80; server_name localhost; root /docker/www/lmrs-2008/public; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /docker/www/lmrs-2008/public; } location ~ .php$ { root /docker/www/lmrs-2008/public; fastcgi_pass 172.17.0.3:9000; //容器的ip地址 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
fastcgi_pass 172.17.0.3:9000;
查看ip信息
[root@localhost docker]# docker inspect php | grep "IPAddress" "SecondaryIPAddresses": null, "IPAddress": "172.17.0.3", "IPAddress": "172.17.0.3",
使用nginx鏡像開啟nginx應(yīng)用容器
[root@localhost ~]# docker run -p 80:80 -d --name nginx -v /docker/nginx/default.conf:/etc/nginx/conf.d/default.conf -v /docker/www:/docker/www --privileged=true nginx -p 80:80:將容器的80端口映射到主機(jī)的80端口 -d 后臺運(yùn)行(守護(hù)進(jìn)程) --name nginx:將容器命名為nginx -v 將主機(jī)中當(dāng)前目錄下的www掛載到容器的www目錄 #查看docker目前的容器 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8781afd1bf13 nginx "/docker-entrypoin..." About an hour ago Up 17 minutes 0.0.0.0:80->80/tcp nginx
2.2 docker安裝php
和nginx一樣,我們可以先通過docker search php查找鏡像,這里直接拉取官方的鏡像,標(biāo)簽為7.4-fpm,其他版本的可自行選擇
[root@localhost ~]# docker pull php:7.4-fpm
等待下載完成后,我們就可以在本地鏡像列表里查到REPOSITORY為php,標(biāo)簽為7.4-fpm的鏡像。
[root@localhost docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/nginx latest 62d49f9bab67 12 days ago 133 MB docker.io/php 7.4-fpm 41b17b0f90e6 2 weeks ago 405 MB
使用php鏡像開啟php-frm應(yīng)用容器
[root@localhost docker]# docker run -p 9000:9000 -d --name php -v /docker/www:/docker/www --privileged=true php:7.4-fpm -p 9000:9000 :將容器的9000端口映射到主機(jī)的9000端口 -d 后臺運(yùn)行(守護(hù)進(jìn)程) --name php:將容器命名為php -v 將主機(jī)中當(dāng)前目錄下的www掛載到容器的www目錄
查看容器啟動情況
[root@localhost docker]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cbf73ca0f17c php:7.4-fpm "docker-php-entryp..." About an hour ago Up About an hour 0.0.0.0:9000->9000/tcp php 8781afd1bf13 nginx "/docker-entrypoin..." About an hour ago Up 23 minutes 0.0.0.0:80->80/tcp nginx
到這里,可以看到nginx和php都運(yùn)行成功(STATUS為up說明正在運(yùn)行)
查看nginx配置的php-fpm服務(wù)ip是否一致:
location ~ .php$ { root /docker/www/lmrs-2008/public; fastcgi_pass 172.17.0.3:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
以上配置中fastcgi_pass 172.17.0.3:9000;需要與我們查看的php容器的ip一致。
完成以上配置并且確定容器啟動沒有問題,可以進(jìn)行測試:
訪問laravel可能出現(xiàn)目錄權(quán)限問題,以下是解決方式:
[root@localhost docker]# cd /docker/www [root@localhost www]# chmod -R 777 文件名
推薦學(xué)習(xí):《docker視頻教程》