Linux 下使用 Docker 安装lnmp环境

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 协议》,转载必须注明作者和本文链接
写这些文章的初衷只是记录一下自己的学习过程,避免自己忘记
文章
110
粉丝
6
喜欢
39
收藏
77
排名:813
访问:8486
私信
所有博文
社区赞助商