zoukankan      html  css  js  c++  java
  • 使用docker搭建lnmp环境

    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这个主机地址.

  • 相关阅读:
    java_29打印流
    java_26 缓冲流
    java-27 Properties类的使用
    java_24.1文件流的应用--复制文件
    java_25 FileReader类和FileWriter类
    java_25.1字节转为字符OutputStreamWriter
    java_23 File类
    java_24 FileOutputStream类和FileInputStream类
    java_21 Set接口、HashSet类、LinkedSet类
    随机数Random和静态函数Math
  • 原文地址:https://www.cnblogs.com/imoing/p/buildLNMPByDocker.html
Copyright © 2011-2022 走看看