初學者在dcoker學習過程當中,可能不太清楚docker中那麼多的命令,參數,工具在lnmp環境搭建中起了什麼做用,下面跟着我來熟悉一下。(本文面向的是不怎麼熟悉linux的:phper)php
鏡像:Docker 鏡像就是一個只讀的模板。
容器:Docker 利用容器來運行應用。
倉庫:倉庫是集中存放鏡像文件的場所。mysql
在環境搭建中的做用:經過鏡像建立容器,經過容器安裝運行應用,最後能夠將容器生成爲鏡像保存到倉庫
建立容器的三種方法:linux
使用centos鏡像,經過命令建立一個容器nginx
docker pull centos # pull 拉取鏡像 docker run -it -P --name 'centos-test' --rm centos /bin/bash # --name 指定容器別名 # -P 經過NAT機制將容器標記暴露的端口自動映射到本地主機的臨時端口 # -i 保持標準輸入打開 默認爲false # -t 是否分配一個僞終端 # 啓動一個bash終端,容許用戶進行交互
使用centos基礎鏡像,經過Dockerfile建立自定義鏡像git
FROM centos
docker build -t centos-slef/laster .
使用centos基礎鏡像,經過docker-compose建立容器並啓動web
lnmp: image: centos # 使用build 參數,會經過 Dockerfile 建立鏡像並基於此鏡像建立運行容器 # 使用image 參數,會直接經過 image 指定的鏡像建立並運行容器
docker-compose up --build
經過容器建立鏡像redis
退出並執行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來快速的建立自定義鏡像。
在環境搭建中的做用:docker
對於不想用Dockerfile建立lnmp環境的人來講,能夠起到微調以容器建立的鏡像的做用shell
# 假設,咱們已經經過容器建立了一個鏡像 lnmp:1.4.0 FROM lnmp:1.4.0 RUN yum install -y git # 固然你能夠繼續遞歸:經過lnmp:1.4.0鏡像,建立容器,進入容器安裝應用,生成鏡像
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"