本篇文章給大家介紹一下linux 下docker的安裝方法,并詳細了解一下 docker 搭建 lnmp環境(php7.4 + nginx )的步驟,希望對大家有所幫助!
1. docker基礎
1.1 docker的安裝
docker的安裝非常簡單,我們可以直接使用centos系統中的yum命令進行安裝:
yum?install?-y?docker
完成后查看docker的版本信息:
立即學習“PHP免費學習筆記(深入)”;
[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狀態 systemctl?restart?docker?#?重新啟動docker
?sudo systemctl enable docker? #設置docker 開機自啟
在啟動之前我們需要修改docker的鏡像源:
[root@localhost?docker]#?vim?/etc/docker/daemon.json { ??"registry-mirrors":?["https://ftnejmh3.mirror.aliyuncs.com"] }
完成后運行systemctl start docker,啟動docker服務。
2. docker搭建lnmp環境
環境軟件介紹:
1. docker
2. nginx
3. mysql
4. php7.4 【推薦學習:《PHP視頻教程》】
docker搭建的lnmp目錄結構:
docker │???└──?nginx │???│???└──?default.conf?#nginx配置文件 │???└──?www │???????└──?...??#項目代碼
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
創建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應用容器
[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端口映射到主機的80端口 -d?后臺運行(守護進程) --name?nginx:將容器命名為nginx -v?將主機中當前目錄下的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查找鏡像,這里直接拉取官方的鏡像,標簽為7.4-fpm,其他版本的可自行選擇
[root@localhost?~]#?docker?pull?php:7.4-fpm
等待下載完成后,我們就可以在本地鏡像列表里查到REPOSITORY為php,標簽為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應用容器
[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端口映射到主機的9000端口 -d?后臺運行(守護進程) --name?php:將容器命名為php -v?將主機中當前目錄下的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都運行成功(STATUS為up說明正在運行)
查看nginx配置的php-fpm服務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一致。
完成以上配置并且確定容器啟動沒有問題,可以進行測試:
?訪問laravel可能出現目錄權限問題,以下是解決方式:
[root@localhost?docker]#?cd?/docker/www [root@localhost?www]#?chmod?-R?777??文件名
推薦學習:《PHP視頻教程》