分解docker在lnmp环境搭建中的做用

前言

初学者在dcoker学习过程当中,可能不太清楚docker中那么多的命令,参数,工具在lnmp环境搭建中起了什么做用,下面跟着我来熟悉一下。(本文面向的是不怎么熟悉linux的:phper)php

镜像,容器,仓库

镜像:Docker 镜像就是一个只读的模板。
容器:Docker 利用容器来运行应用。
仓库:仓库是集中存放镜像文件的场所。mysql

在环境搭建中的做用:经过镜像建立容器,经过容器安装运行应用,最后能够将容器生成为镜像保存到仓库
建立容器的三种方法:linux

  1. 使用centos镜像,经过命令建立一个容器nginx

    docker pull centos
    # pull 拉取镜像
    docker run -it -P --name 'centos-test' --rm centos /bin/bash
    # --name 指定容器别名
    # -P 经过NAT机制将容器标记暴露的端口自动映射到本地主机的临时端口
    # -i 保持标准输入打开 默认为false
    # -t 是否分配一个伪终端
    # 启动一个bash终端,容许用户进行交互
  2. 使用centos基础镜像,经过Dockerfile建立自定义镜像git

    FROM centos
    docker build -t centos-slef/laster .
  3. 使用centos基础镜像,经过docker-compose建立容器并启动web

    lnmp:
    image: centos
    # 使用build 参数,会经过 Dockerfile 建立镜像并基于此镜像建立运行容器
    # 使用image 参数,会直接经过 image 指定的镜像建立并运行容器
    docker-compose up --build
  4. 经过容器建立镜像redis

    1. 在容器中安装lnmp环境
    2. 退出并执行sql

      docker commit -a 'amor' -m 'add lnmp' c6b9b6cf3174 lnmp:1.4.0
          # -a 做者信息
          # -m 备注
          # c6b9b6cf3174 容器id 运行的经过:docker ps 查看 中止的经过:docker ps -qa 查看

Dockerfile

Dockerfile:Dockerfile 是一个文本格式的配置文件,用户能够使用Dockerfile来快速的建立自定义镜像。
在环境搭建中的做用:docker

  1. 对于不想用Dockerfile建立lnmp环境的人来讲,能够起到微调以容器建立的镜像的做用shell

    # 假设,咱们已经经过容器建立了一个镜像 lnmp:1.4.0
    FROM lnmp:1.4.0
    RUN yum install -y git
    # 固然你能够继续递归:经过lnmp:1.4.0镜像,建立容器,进入容器安装应用,生成镜像
  2. 对于运维来讲,直接能够用Dockerfile建立lnmp环境镜像

docker-compose

Docker官方编排工具,负责实现对Docker容器集群的快速编排。定位:定义和运行多个Docker容器的应用.

如今咱们有这样的一个需求,我不仅仅须要lnmp环境,可能还须要lamp环境,可能还有redis。若是不用docker-compose 咱们可能将上述讲的命令每搭建一次就须要执行一遍,有没有能统一管理的?有,就是docker-compose.
在环境搭建中的做用:
快速建立镜像,快速建立并运行容器,实现统一管理。

lnmp:
  build: . # 根据当前路径下的Dockerfile建立镜像
  ports:   # 将定义的端口暴露并映射到本地
    - "80:80"
    - "443:443"
    - "22:22"
  volumes: # 挂载文件夹
    # nginx 配置文件夹
    - ./conf/nginx/:/usr/local/nginx/conf/
    # mysql 配置文件
    - ./conf/mysql/my.cnf:/etc/my.cnf:rw
    # php配置文件
    - ./conf/php/:/usr/local/php/etc/
    # 项目目录
    - /data/Nutcloud/Ubuntu/website/:/data/website/
    # nginx 日志
    - /data/Nutcloud/Ubuntu/docker/lnmp/log:/
  links: # 容器互联
    - redis:redis
  tty: true # 保证docker-compose 执行后,容器不自动退出
redis:
  image: redis:latest
  ports:
    - "6379:6379"
相关文章
相关标签/搜索