分解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"
相關文章
相關標籤/搜索