Linux 下使用Docker 安裝 LNMP環境 超詳細


 

首先在阿里雲購買了一台服務器 選擇了華南-深圳地區 操作系統選用了 CentOS8.0 64位

 

 

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 https://download.docker.com/linux/centos/docker-ce.repo

 

 

 

 

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

$ yum list docker-ce --showduplicates | sort -r

 

 

 

7、安裝docker

$ sudo yum install docker-ce  #由於repo中默認只開啟stable倉庫,故這里安裝的是最新穩定版17.12.0
$ sudo yum install <FQPN>  # 例如:sudo yum install docker-ce-17.12.0.ce

安裝過程報錯了:

 

 

 

分析原因

看上面的內容,說的是containerd.io >= 1.2.2-3 ,意思就是 containerd.io 的版本必須大於等於 1.2.2-3

解決方案

1、要么就降低docker 的版本

2、如果不想降低docker 版本,那么就更新 containerd.io 的版本

$ wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
$ yum install -y containerd.io-1.2.6-3.3.el7.x86_64.rpm

然后回到第7步驟  輸入 

 

 

 

8、啟動並加入開機啟動

$ sudo systemctl start docker
$ sudo systemctl enable docker

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

$ docker version

 

 

 10、查看docker列表

$ sudo systemctl docker images

 

 

以上安裝docker 內容完畢,接下來通過運行環境.

 -------------------------------------------------------------------------

docker安裝nginx 

docker search nginx

  

 

 

 2.拉取官方的鏡像

docker pull nginx

  

 

 

 3.創建並運行容器,綁定映射端口

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

  --name 這里是別名,使用docker ps 會最后顯示names

  -p  80:80    第一個80是服務器的端口,第二個80是docker容器端口,

  -d 要運行的容器名稱 這里是nginx

 

 

 上面運行報錯了,這里是以前裝了nginx,通過docker ps -a 查看

 

 

 現在進行清除命令:

docker rm `docker ps -a -q`

現在運行第三步  ,會成功。

docker run --name nginx -p 80:80 -d nginx
通過netstat -nltp 可以查看到80 端口已經啟動。

 

此刻訪問IP,nginx 正常運行起來

 

 

 

 

 

 

docker安裝php

1.查找Docker Hub上的php鏡像

docker search php

  

 

 

 2.拉取官方的鏡像,標簽為 phpdockerio/php72-fpm

docker pull phpdockerio/php72-fpm

  

 

 

 3.現在需要查看nginx 默認運行的路徑 先進入nginx 容器 再找到/etc/nginx/conf.d/default.conf    查看默認訪問路徑

docker exec -it nginx bash
cat /etc/nginx/conf.d/default.conf -n

 

 

 4.創建並運行php容器

docker run -p 9000:9000 --name phpfpm -v /var/www/html:/usr/share/nginx/html -d phpdockerio/php72-fpm

  

5.進入php 容器,找到路徑

/usr/share/nginx/html

創建一個文件 index2.php 文件

docker exec -it phpfpm bash
cd /usr/share/nginx/html/
vim index2.php

  

 

 現在 vim 是沒有安裝,需要運行

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

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 文件訪問

docker exec -it phpfpm bash
cd /etc/nginx/conf.d/

apt-get update
apt-get install vim
vim default.conf

在代碼里面加入 9000 端口這段代碼

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

docker restart nginx

  

 

 

docker安裝mysql

1.查找鏡像:

 docker search mysql

也可以去官網查看鏡像tag,選擇自己需要的版本,否則會下載最新版本:https://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安裝的全過程,目前的環境搭建已經全部完成了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM