设为首页 收藏本站
查看: 1691|回复: 0

[经验分享] 使用docker搭建lnmp环境

[复制链接]

尚未签到

发表于 2015-4-17 10:50:15 | 显示全部楼层 |阅读模式
Docker容器LNMP环境搭建

  • 安装
  • 制作镜像
  • 启动并关联实例
安装
系统环境

  • 硬件型号: ThinkPad T520
  • 系统版本: ubuntu 14.04
  • CPU: i7
  • RAM: 8G
添加软件源
  由于Ubuntu源中的最先版本为0.9无法满足要求,所以需要使用Docker的官方源
添加密钥:

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys \
36A1D7869245C8950F966E92D8576A8BA88D21E9

源地址: deb http://get.docker.io/ubuntu docker main
添加源可以通过"软件和更新->其它软件->添加"来操作
添加后执行如下命令:

$ sudo apt-get update
$ sudo apt-get install lxc-docker-1.1.1
  
  注: 官方给出的源地址为https连接的,但是总是出现ssl验证失败的错误,最后改为非
ssl连接之后正常  
  
测试
  执行如下命令获取容器镜像,创建一个实例并打开一个实例shell

$ sudo docker run -t -i centos:latest /bin/bash
  
  注:第一次运行由于需要下载镜像可能需要多等一会儿
运行成功后会有一个新的shell提示符  
  
制作镜像
要求

  • web容器安装Nginx+PHP服务
  • 数据库容器安装Mysql服务
  • web服务和数据库分离
  • web服务容器可以访问数据库容器
制作nginx+php镜像
  启动一个容器实例:

$ sudo docker run -t -i centos:latest /bin/bash

安装nginx与PHP:
Nginx可以使用源码或rpm包进行安装,PHP可以使用源码或yum安装.具体安装和配置这里
不进行具体讲述.  
  注:需要把nginx与php-fpm添加到系统服务中并设置开机启动
我设置的站点根目录为/opt/web  
  退出shell并执行如下命令制作镜像:

$ sudo docker commit -m="web service image nginx+php" -a="username" \
sudo docker ps -lq username/web:v1
  
  这是一个组合命令:
sudo docker commit根据已有实例制作镜像
sudo docker ps -lq返回最后一个运行的实例id
已有镜像可以使用sudo docker images 查看
至此创建了第一个镜像 username/web:v1  
  
制作mysql镜像
  启动实例:

$ sudo docker run -t -i centos:latest /bin/bash

安装Mysql.
设置Mysql服务开机启动:

$ chkconfig mysqld on

启动mysql.
修改mysql登陆权限:

mysql> grant all privileges on . to 'root'@'%' identified by 'dbpasswd';
mysql> flush privileges;
  
  mysql服务默认只能本地连接,制作镜像的时候需要注意.否则是无法连接到数据库的.  
  退出shell并执行如下命令制作mysql容器镜像:
$ sudo docker commit -m="mysql service image" -a="username" \
sudo docker ps -lq username/mysql:v1
  
  清除不再需要的实例:

$ sudo docker rm sudo docker ps -aq
  
  
启动并关联实例
  web实例依赖与mysql,所以先打开一个mysql实例:

$ sudo docker run -d --name db username/mysql:v1 /sbin/init
  
  -d参数是让实例以dameon的形式运行. /sbin/init是创建实例后执行的操作,此处为初
始化系统服务,包括运行mysql.  
  启动web实例并与数据库实例进行关联:

$ sudo docker run -d --name web --link db:db -p 8080:80 -v /path/to/src:/opt/web username/web:v1 /sbin/init
  
  --link参数设置关联的容器,可以设置多个.关联之后会自动更新web容器的host,把db
的地址指向到数据库容器的地址.
-p 参数用来进行ip映射.此处把容器的80端口映射到了本地的8080端口.web服务可是
通过localhost:8080访问.
-v 参数把数据挂载到容器指定目录.此处为把站点源码目录挂载到容器的站点目录.
在web容器中访问数据库容器的mysql服务可以使用db这个主机地址.  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-58102-1-1.html 上篇帖子: Docker 初级实践 下篇帖子: ANDROID和DOCKER的一致架构设计(2):包装通信协议
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表