前言
初学者在dcoker学习过程中,可能不太清楚docker中那么多的命令,参数,工具在lnmp环境搭建中起了什么作用,下面跟着我来熟悉一下。(本文面向的是不怎么熟悉linux的:phper)
镜像,容器,仓库
镜像:Docker 镜像就是一个只读的模板。
容器:Docker 利用容器来运行应用。
仓库:仓库是集中存放镜像文件的场所。
在环境搭建中的作用:通过镜像创建容器,通过容器安装运行应用,最后可以将容器生成为镜像保存到仓库
创建容器的三种方法:
使用centos镜像,通过命令创建一个容器
docker pull centos # pull 拉取镜像 docker run -it -P --name 'centos-test' --rm centos /bin/bash # --name 指定容器别名 # -P 通过NAT机制将容器标记暴露的端口自动映射到本地主机的临时端口 # -i 保持标准输入打开 默认为false # -t 是否分配一个伪终端 # 启动一个bash终端,允许用户进行交互
使用centos基础镜像,通过Dockerfile创建自定义镜像
FROM centos
docker build -t centos-slef/laster .
使用centos基础镜像,通过docker-compose创建容器并启动
lnmp: image: centos # 使用build 参数,会通过 Dockerfile 创建镜像并基于此镜像创建运行容器 # 使用image 参数,会直接通过 image 指定的镜像创建并运行容器
docker-compose up --build
通过容器创建镜像
- 在容器中安装lnmp环境
退出并执行
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来快速的创建自定义镜像。
在环境搭建中的作用:
对于不想用Dockerfile创建lnmp环境的人来说,可以起到微调以容器创建的镜像的作用
# 假设,我们已经通过容器创建了一个镜像 lnmp:1.4.0 FROM lnmp:1.4.0 RUN yum install -y git # 当然你可以继续递归:通过lnmp:1.4.0镜像,创建容器,进入容器安装应用,生成镜像
- 对于运维来说,直接可以用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"