Linux 下使用 Docker 安裝lnmp環境

全網第一菜雞發表於2021-05-14

1. 初始化賬號密碼 登陸xshell,開始裝Docker

一、安裝docker

1、Docker 要求 CentOS 系統的核心版本高於 3.10 ,檢視本頁面的前提條件來驗證你的CentOS 版本是否支援 Docker 。

透過 *uname -r *命令檢視你當前的核心版本

$ uname -r

2、使用 root 許可權登入 Centos。確保 yum 包更新到最新。

$ sudo yum update

3、解除安裝舊版本(如果安裝過舊版本的話)

$ sudo yum remove docker docker-common docker-selinux docker-engine

4、安裝需要的軟體包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

5、設定yum源

$ sudo yum-config-manager –add-repo download.docker.com/linux/centos/d...

6、可以檢視所有倉庫中所有docker版本,並選擇特定版本安裝

$ yum list docker-ce –showduplicates | sort -r
7、安裝docker

$ sudo yum install docker-ce #由於repo中預設只開啟stable倉庫,故這裡安裝的是最新穩定版17.12.0
$ sudo yum install # 例如:sudo yum install docker-ce-17.12.0.ce
8、啟動並加入開機啟動

$ sudo systemctl start docker
$ sudo systemctl enable docker

9、驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了)

$ docker version

10、檢視docker列表

$ sudo systemctl docker images
以上安裝docker 內容完畢,接下來透過執行環境.


docker安裝nginx

| 1 | docker search nginx |

2.拉取官方的映象

| 1 | docker pull nginx |
3.建立並執行容器,繫結對映埠

| 1 | docker run --name nginx -p 80:80 -d nginx |

  –name 這裡是別名,使用docker ps 會最後顯示names

  -p 80:80 第一個80是伺服器的埠,第二個80是docker容器埠,

  -d 要執行的容器名稱 這裡是nginx
此刻訪問IP,nginx 正常執行起來

docker安裝php

1.查詢Docker Hub上的php映象

| 1 | docker search php |
2.拉取官方的映象,標籤為 phpdockerio/php72-fpm

| 1 | docker pull phpdockerio/php72-fpm |
3.現在需要檢視nginx 預設執行的路徑 先進入nginx 容器 再找到/etc/nginx/conf.d/default.conf 檢視預設訪問路徑

| 12 | docker ``exec -it nginx bash``cat /etc/nginx/conf.d/``default``.conf -n |
4.建立並執行php容器

| 1 | docker run -p 9000:9000 --name phpfpm -v /``var``/www/html:/usr/share/nginx/html -d phpdockerio/php72-fpm |
5.進入php 容器,找到路徑

| 1 | /usr/share/nginx/html |

建立一個檔案 index2.php 檔案

| 123 | docker ``exec -it phpfpm bash``cd /usr/share/nginx/html/``vim index2.php |
現在 vim 是沒有安裝,需要執行

| 123456789 | apt-get update``apt-get install vim``cat << EOF > /root/.vimrc``:set encoding=utf-8``:set fileencodings=ucs-bom,utf-8,cp936``:set fileencoding=gb2312``:set termencoding=utf-8``EOF |
儲存退出!然後進入伺服器 /var/www/html 發現生成了index2.php,其實這個就相當與對映docker 路徑到伺服器路徑了
6.現在就是要nginx 配置訪問php 檔案了,如果直接訪問就會是404
6.1 獲取到phpfpm 這個容器的ip

| 1 | docker inspect -f ``'{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' phpfpm |
最後這個內網ip是:172.17.0.3,這個ip 會配置到/etc/nginx/conf.d/default.conf

6.2 配置nginx 支援php 檔案訪問

| 123456 | docker ``exec -it phpfpm bash``cd /etc/nginx/conf.d/``apt-get update``apt-get install vim``vim ``default``.conf |

在程式碼裡面加入 9000 埠這段程式碼

| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | server {``listen 80;``listen [::]:80;``server_name localhost;``#charset koi8-r;``#access_log /``var``/log/nginx/host.access.log main;``location / {``root /usr/share/nginx/html;``index index.html index.htm;``}``#error_page 404 /404.html;``# redirect server error pages to the ``static page /50x.html``#``error_page 500 502 503 504 /50x.html;``location = /50x.html {``root /usr/share/nginx/html;``}``# proxy the PHP scripts to Apache listening on 127.0.0.1:80``#``#location ~ \.php$ {``# proxy_pass http:``//127.0.0.1;``#}``# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000``# 加入以下的程式碼 可以訪問php檔案``location ~ \.php$ {``root /usr/share/nginx/html;``fastcgi_pass 172.17.0.3:9000;``fastcgi_index index.php;``fastcgi_param SCRIPT_FILENAME ``$document_root``$fastcgi_script_name``;``#fastcgi_param SCRIPT_FILENAME /scripts``$fastcgi_script_name``;``include fastcgi_params;``}``# deny access to .htaccess files, ``if Apache's document root``# concurs with nginx's one``#``#location ~ /\.ht {``# deny all;``#}``} |

6.3 重啟nginx ,即可訪問index2.php

| 1 | docker restart nginx |

docker安裝mysql

1.查詢映象:

docker search mysql

也可以去官網檢視映象tag,選擇自己需要的版本,否則會下載最新版本:hub.docker.com/_/mysql/
2.下載映象(如上一步,可以指定想要的版本,不指定則為最新版):

docker pull mysql

3.透過映象建立容器並執行:
docker run -p 3306:3306 –name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

  • -p 3306:3306:將容器的 3306 埠對映到主機的 3306 埠。

  • -v -v $PWD/conf:/etc/mysql/conf.d:將主機當前目錄下的 conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf。

  • -v $PWD/logs:/logs:將主機當前目錄下的 logs 目錄掛載到容器的 /logs。

  • -v $PWD/data:/var/lib/mysql :將主機當前目錄下的data目錄掛載到容器的 /var/lib/mysql 。

  • -e MYSQL_ROOT_PASSWORD=123456:初始化 root 使用者的密碼。
    此時,用navicat for mysql連線mysql發現報錯:Client does not support authentication protocol requested by server。。。
    解決方案:

進入容器:

docker exec -it 62349aa31687 /bin/bash

進入mysql:

mysql -uroot -p

授權:

mysql> GRANT ALL ON . TO ‘root‘@’%’;

重新整理許可權:

mysql> flush privileges;

更新加密規則:

mysql> ALTER USER ‘root‘@’localhost’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER;

更新root使用者密碼:

mysql> ALTER USER ‘root‘@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;

重新整理許可權:

mysql> flush privileges;
以上是MySQL安裝的全過程,目前的環境搭建已經全部完成了。

原文連結:www.cnblogs.com/leijiangsheng/p/13...

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章