docker的安装部署及使用docker安装mysql+php+nginx教程

投稿   野人  2019-01-28 07:19:01  258 人阅读  11 条评论

因为之前服务器是装着军哥的lnmp1.4,担心跟 docker 有冲突,所以一直也没有去接触 docker,另外一方面是自己懒,因为每次折腾,没有个一两天是完事不了的(其实就是水平 low 呗),好了,这不蹭着暑假这波(从去年就喊,每次给服务器搬个家,累得要死,赶紧换 docker 了)今天可算是真枪实战一波了。

建议阅读本文之前可以先去docker 官网先了解下容器,镜像,仓库等概念,再来观看本文的操作!

1、准备 docker 的运行环境

①查看自己服务器内核版本,命令: uname  –a  返回结果在 3.1  64bit 的,即可安装。

docker的安装部署及使用docker安装mysql+php+nginx教程 建站经验 第2张

②不行的话建议升级内核版本后,再来安装。docker 内核升级教程可参考:

因为我是结合这两篇教程操作的,所以就放着两篇地址,其他的没操作过,没话语权。这里建议按步骤走,网上的很多教程有这坑,这步操作好了,就可以开始初探 docker 了。

2、安装 docker

①先更新下 yum,命令 yum update

②添加 yum 仓库,命令如下

tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

③安装 docker 命令:yum install -y docker-engine

安装好,如下图:

docker的安装部署及使用docker安装mysql+php+nginx教程 建站经验 第3张

图片中有句 Cannot connect to the Dokcer daemon。。。我当时装好的时候也有这句,我没管他, 也不影响使用。继续。

④启动 docker 命令 service docker start

上面这部分教程来源:linux 上安装 Docker(非常简单的安装方法),当时在查找教程中还发现个问题,就是有的命令带有 sodo (sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作),因为我自己都是用 root 操作的,所以不存在这个问题。

3、安装 mysql

①去 docker 仓库(https://hub.docker.com/)拉取 mysql 镜像,命令 docker pull mysql

该命令是拉取最新的 mysql 版本,如果你要指定 mysql 版本,命令 docker pull mysql:5.6

②创建 mysql 容器,命令

docker run \
--name web-mysql \
-d -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456789 \
-v /web/mysql/data:/var/lib/mysql \
-v / web /mysql/conf.d:/etc/mysql/conf.d \
-v /etc/localtime:/etc/localtime:ro \
c54721a9eb17

参数说明

  • --name 给这个容器取个别名叫 web-mysql
  • --d 保持后台运行
  • -p 指定端口,进行端口映射,将宿主机的 3306 端口映射到容器内的 3306
  • -v 目录挂载,这个-v 主要用处是方便我们在宿主机上操作容器内的配置文件,要不然每次操作配置文件都需要进入容器后然后修改配置文件
  • -v /etc/localtime:/etc/localtime:ro 特别说下,因为我发现容器内的时间会跟宿主机相差 8 个小时,加载这个目录是为了校正时间跟宿主机时间一致。
  • c54721a9eb17——是容器的 ID (可通过 docker images 可以看到)

更多参数的详解,请参考Docker 命令大全

这里有个问题,关于我在查找教程的时候,发现有的人需要配置 docker 的镜像源(因为 docker 在国内访问较慢),所以就有先要修改镜像源的操作,主要解决国内环境下载慢的问题,修改镜像源方法请参考:Docker 镜像源修改。本文中因为我的服务器在国外的,所以就不用考虑配置什么国内源。

4、安装 php

①拉取 php 镜像,命令  docker pull php-fpm,指定版本的命令同上。

②创建 php 容器,命令

docker run \
--name web-php \
-d -p 9000:9000 \
-v /web/php-fpm/etc/:/usr/local/etc/php \
-v /web/nginx/web:/var/www/html \
-v /web/localtime:/etc/localtime:ro \
--link web-mysql \
953f20b0e810

这里的多了个参数

--link 是跟已经运行的 web-mysql 容器建立链接。所以才说要按顺序安装容器的。

其他的命令同上,php 容器运行好后,有个问题要注意,因为默认的 php 镜像中是不带有 mysqli 模块(这个模块是一定要装的,因为连接数据都需要用到)。操作方法

(1)使用命令的进入容器内部 docker exec -it 890ec4245c56 /bin/bash

这的 890ec4245c56 是你运行好后的容器 ID(用 docker ps 查看获取)

docker的安装部署及使用docker安装mysql+php+nginx教程 建站经验 第4张

(2)进去后,输入命令 docker-php-ext-install mysqli 等待安装好, 如果出现

cannot create /usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini: Directory nonexistent

请参考:docker 下 php 安装扩展进行解决。

5、安装 nginx

①拉取 nginx 镜像,命令 docker pull nginx,指定版本命令同上 。

②创建 nginx 容器,命令

docker run \
--name web-nginx \
-d -p 80:80 \
-v /web/nginx/conf/nginx.conf:/etc/nginx/nginx.conf/  \
-v /web/nginx/conf/vhost/conf.d:/etc/nginx/conf.d \
-v /web/nginx/web:/usr/share/nginx/html  \
-v /web/nginx/logs:/var/log/nginx/  \
-v /etc/localtime:/etc/localtime:ro \
--link web -php \
436be79de93f

安装后 nginx 容器后有几个点要注意:

nginx 配置文件中要把 php 部分的参数改成 php 的,这样 php 才能进行解析。

先进入 nginx 容器中,用命令(这条命令是把 web-nginx 容器里面的 nginx.conf 配置文件复制到我们的指定的目录下):

docker cp web-nginx:/etc/nginx/nginx.conf /web/nginx/conf/

这条命令详解请参考:Docker cp 命令

然后就可以直接到我们宿主机上修改 nginx.conf 文件。

还有个配置文件是 default.conf 是主要来负责做站点解析

server {
listen       80;
server_name  www.web.com web.com;

#charset koi8-r;
access_log  /var/log/nginx/host.access.log  main;

location / {
root   /usr/share/nginx/html/;
index  index.html index.htm index.php;
}

#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
#

location ~ \.php$ {
root           html;
fastcgi_pass     web-php:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /var/www/html/$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;
#}
}

web-php 和/var/www/html/是需要修改的两个地方,如果你是按上面的命令进行操作的,就修改这两个地方,然后上传到我们的指定的目录/ web /nginx/conf/vhost/conf.d 里

我说下修改的地方

第一处地方我改成 web-php,因为这是我们自己创建了一个叫 web-php 容器名称/id(ID 太长了不好分辨),9000 也正是 php 的端口

第二处修改地方,是指 php 需要执行的文件地址,为什么填这个地址呢?因为这是 php 默认解析目录地址。

操作完上面的几个步骤了,先停止所有容器,然后重启(为了让配置生效)。

停止容器的命令  docker  stop 容器 ID/容器别名

开启容器的命令  docker  start 容器 ID/容器别名(开启的时候一定要按顺序 1.mysql 2.php 3.nginx,因为容器之间都有做关联,如果你所需关联的容器没有先启动,那这个容器是不是就会开启失败了,这就是为什么一定要按顺序!!!)

上面所有需要创建的配置文件,我都整理好,不想自己动手配置的可以直接下载配置文件,点此下载 docker 配置文件

下面分享下常见的 docker 命令

  • 容器的开启/停止/重启:docker start/stop/restart 容器 ID/别名
  • 容器的删除:docker rm 容器 ID/别名
  • 镜像删除:docker rmi 镜像 ID(先停止容器后,删除。方法二强制删除 docker rmi –f 容器 ID/别名,这就不用管他停没停止了 )
  • 进入容器:docker exec -it 容器 ID/容器别名 /bin/bash(网上还有条进入容器的命令,不过我都是用这条,因为用这条命令进去的容器,你退出容器后还是容器是还在运行的状态!)
  • 查看容器的 ID 地址:docker inspect --format '{{ .NetworkSettings.IPAddress }}' 容器 ID/容器别名
  • 查看正在运行的容器:docker ps
  • 查看所有状态下的容器:docker ps –a
  • 查看某个容器的日志: docker logs 容器 ID/容器别名
  • 停止所有的容器:docker stop $(docker ps -a -q)
  • 删除所有的容器:docker rm $(docker ps -a -q)
  • docker 的开启/重启/状态:service docker start/restart/status

接触 docker 好几天了,才对他有那么一丢点了解(生怕下次再操作的时候会忘记了,所以特地写了篇文章,以备不时之需,而且里面的操作,都是我装 docker 时遇到的问题,把所有发生的问题都记录整合在一起,这样也省了有同样问题的朋友,要百度好几次,而浪费时间!),

我自己也同时在几个服务器上配了 docker,不得不说 docker 配置环境真的很快,我第一次配的时候,因为不熟练,所以配的慢, 等到我第二次配的时候,所有操作 10 分钟搞定,相比之前用军哥的一键安装包的配置时间真的缩短的不是一两倍啊!还有 docker 占用内存也比我之前的低。所以搞下来这几天,还是挺有收获的!

文中所有的操作方法,皆是来源于网络,由我整合归纳,如有发现错误,还请麻烦指正,谢谢!

作者:野人 邮箱:zhuibo6@qq.com

您可能感兴趣的文章

文章标签: ,   ,  
原文地址:https://boke112.com/6402.html
温馨提示:文章内容仅代表作者个人观点,不代表boke112导航赞同其观点和对其真实性负责!
版权声明:本文为投稿文章,感谢 野人 的投稿,版权归原作者所有,欢迎分享本文,转载请保留出处!
©boke112导航,本站推荐使用:阿里云 ECS服务器等云产品服务,国外免备案主机建议使用:老薛主机
公共账号

 发表评论

中国赞表情摊手表情吃瓜表情笑哭表情偷笑表情衰表情汗表情思考表情费解表情抓狂表情晕表情流泪表情疑问表情嘻嘻表情吃惊表情鼓掌表情

  1. QQ技术博客
    QQ技术博客 @回复

    写得不错。。

  2. Fat_凯
    Fat_凯 @回复

    公司服务器就是使用docker搭建的web环境,易于维护;我自己的服务器直接上了lnmp。

  3. 姜辰
    姜辰 @回复

    感觉docker的玩法真的高大上,让我有点心动了。😂

    还是淡定点好了。

  4. 蒲公英
    蒲公英 @回复

    不知道docker是否可以实现,QQ在linux环境登录 [疑问]

  5. WordPress建站吧
    WordPress建站吧 @回复

    现在用宝塔 的感觉很多。。

  6. 黑鸟博客
    黑鸟博客 @回复

    这个厉害docker貌似有很多玩法

  7. SEO学习博客
    SEO学习博客 @回复

    干货已收藏

  8. 明月登楼
    明月登楼 @回复

    不错,这个折腾可以!