1,Dockerfile介绍

  • 目的: 知道dockerfile的作用, 以及dockerfile中常见的指令
  • 作用:
  • 1, Dockerfile是一个文本文档,用户可以编写很多命令生成一个新的镜像。
  • 2, 使用docker build执行Dockerfile里面的多个命令,可以生成出镜像来
  • 指令:
  • 1, from: 指定源镜像
  • 2, maintianer: 作者信息
  • 3, run: 运行命令,比如:linux命令, mkdir 文件夹名称
  • 4, add: 添加文件, 压缩包会自动解压
  • 5, copy: 添加文件, 压缩包不会自动解压
  • 6, workdir : 进入到指定的文件夹中
  • 7, env: 定义系统变量
  • 8, volume: 设置挂载点
  • expose: 开放端口
  • entrypointer: 运行脚本指令, 比如: python mange.py runserver

2,from指令

  • 目的: 可以使用from命令, 创建新的镜像
  • 操作流程:
  • 1, 编写Dockerfile
# 1, 源镜像,from需要写在有效代码第一行,注释不算
from ubuntu
  • 2, 构建新的镜像
  • dockerfile build -t my_ubuntu2:v1.0 .
  • 注意: 最后的.(点)一定不能省略,表示的是Dockerfile文件

3,maintainer指令

  • 目的: 可以使用maintainer命令, 创建新的镜像
  • 操作流程:
  • 1, 编写Dockerfile
# 1, 源镜像,from需要写在有效代码第一行,注释不算
from ubuntu

# 2,maintainer,指定新镜像的爸爸(作者)
maintainer gebilaowang
  • 2, 构建新的镜像
  • docker build -t my_ubuntu3:v1.0 .

4,run指令

  • 目的: 可以使用maintainer命令, 创建新的镜像, 通过镜像创建容器的时候,在容器内部生成haha的文件夹
  • 操作流程:
  • 1, 编写Dockerfile
# 1, 源镜像,from需要写在有效代码第一行,注释不算
from ubuntu

# 2,maintainer,指定新镜像的爸爸(作者)
maintainer gebilaowang

# 3, 创建新文件夹,通过镜像生成容器的时候,容器内部就有了haha文件夹
run mkdir haha
# run apt-get update && apt-get install net-tools
  • 2, 构建新的镜像
  • docker build -t my_ubuntu4:latest .

5,env指令

  • 目的: 可以使用env在系统中内置一些变量, 当做环境变量
  • 操作流程:
  • 1, 编写Dockerfile
# 1, 源镜像,from需要写在有效代码第一行,注释不算
from ubuntu

# 2,maintainer,指定新镜像的爸爸(作者)
maintainer gebilaowang

# 3, 创建新文件夹,通过镜像生成容器的时候,容器内部就有了haha文件夹
run mkdir haha
# run apt-get update && apt-get install net-tools

# 4, 定义变量
env name laowang
env my_path /home
  • 2, 构建新的镜像
  • docker build -t my_ubuntu5:latest .

6,add指令

  • 目的: 创建镜像的时候, 可以在镜像内容添加一些文件, 压缩包
  • 操作流程:
  • 1, 编写Dockerfile
# 1, 源镜像,from需要写在有效代码第一行,注释不算
from ubuntu

# 2,maintainer,指定新镜像的爸爸(作者)
maintainer gebilaowang

# 3, 创建新文件夹,通过镜像生成容器的时候,容器内部就有了haha文件夹
#run mkdir haha
# run apt-get update && apt-get install net-tools

# 4, 定义变量
#env name laowang
#env my_path /home

# 5, 添加文件
add a.txt /home
add b.tar /home
  • 2, 构建新的镜像
  • docker build -t my_ubuntu6:latest .
  • 注意点:
  • 如果通过add添加压缩包的时候, 会自动解压

7,copy指令

  • 目的: 可以创建镜像的时候, 通过copy指令添加数据到镜像中
  • 操作流程:
  • 1, 编写Dockerfile
# 1, 源镜像,from需要写在有效代码第一行,注释不算
from ubuntu

# 2,maintainer,指定新镜像的爸爸(作者)
maintainer gebilaowang

# 3, 创建新文件夹,通过镜像生成容器的时候,容器内部就有了haha文件夹
#run mkdir haha
# run apt-get update && apt-get install net-tools

# 4, 定义变量
#env name laowang
#env my_path /home

# 5, 添加文件
#add a.txt /home
#add b.tar /home

copy a.txt /home
copy b.tar /home
  • 2, 构建新的镜像
  • docker build -t my_ubuntu7:latest .
  • 注意点:
  • 如果通过copy添加压缩包的时候, 不会自动解压

8,workdir指令

  • 目的: 可以创建镜像的时候, 进入到目录下面中
  • 操作流程:
  • 1, 编写Dockerfile
# 1, 源镜像,from需要写在有效代码第一行,注释不算
from ubuntu

# 2,maintainer,指定新镜像的爸爸(作者)
maintainer gebilaowang

# 3, 创建新文件夹,通过镜像生成容器的时候,容器内部就有了haha文件夹
#run mkdir haha
# run apt-get update && apt-get install net-tools

# 4, 定义变量
#env name laowang
#env my_path /home

# 5, 添加文件
#add a.txt /home
#add b.tar /home

#copy a.txt /home
#copy b.tar /home

# 6, 进入到指定的文件夹中
run mkdir /home/haha
run mkdir /home/haha/haha2
workdir /home/haha/haha2
  • 2, 构建新的镜像
  • docker build --no-cache -t my_ubuntu8:latest .
  • --no-cache: 构建镜像的时候, 忽略缓存

9,volume指令

  • 目的: 可以创建镜像的时候, 设置挂载点
  • 操作流程:
  • 1, 编写Dockerfile
# 1, 源镜像,from需要写在有效代码第一行,注释不算
from ubuntu

# 2,maintainer,指定新镜像的爸爸(作者)
maintainer gebilaowang

# 3, 创建新文件夹,通过镜像生成容器的时候,容器内部就有了haha文件夹
#run mkdir haha
# run apt-get update && apt-get install net-tools

# 4, 定义变量
#env name laowang
#env my_path /home

# 5, 添加文件
#add a.txt /home
#add b.tar /home

#copy a.txt /home
#copy b.tar /home

# 6, 进入到指定的文件夹中
#run mkdir /home/haha
#run mkdir /home/haha/haha2
#workdir /home/haha/haha2

# 7, 设置挂载点
volume ["/data1","/data2"]
  • 2, 构建新的镜像
  • docker build --no-cache -t my_ubuntu9:latest .
  • 3, 测试volume挂载数据共享
  • docker run -it --name ubuntu9 my_ubuntu9:latest /bin/bash
  • docker run -it --name ubuntu9_1 --volumes-from ubuntu9 my_ubuntu9:latest /bin/bash

10, expose指令

  • 目的: 创建新镜像的时候, 可以使用expose开放端口
  • 操作流程:
  • 1, 编写Dockerfile
# 1, 源镜像,from需要写在有效代码第一行,注释不算
from ubuntu_python

# 2,maintainer,指定新镜像的爸爸(作者)
maintainer gebilaowang

# 3, 开放端口,和需要被访问的应用程序关联
expose 8000
  • 2, 构建新的镜像
  • docker build --no-cache -t my_ubuntu10:latest .
  • 3, 创建容器
  • docker run -it --name hello_python -p 8001:8000 my_ubuntu10:latest /bin/bash
  • 4, 进入到容器内部创建django程序, 并设置settings.py
  • ALLOWED_HOSTS = ['*']
  • python3 manager runserver 0.0.0.0:8000
  • 5, 外界通过浏览器访问8001端口

11,entrypoint指令

  • 目的: 创建镜像, 可以使用entrypoint命令运行程序
  • 操作流程:
  • 1, 准备项目
  • demo01.tar
  • 2, 编写Dockerfile
#1,指定源镜像
from ubuntu_python

#2,指定作者
maintainer laowang

#3,添加项目到home中
add demo01.tar /home

#4,进入到demo01中
workdir /home/demo01

#5,开放端口
expose 8000

#6,运行程序
entrypoint python3 manage.py runserver 0.0.0.0:8000
  • 3, 构建新的镜像
  • docker build --no-cache -t demo01:latest .
  • 4, 创建容器
  • docker run -d --name demo01 -p 80:8000 demo01:latest
  • docker run -d --name demo02 --network=host demo01:latest
  • 注意点: 在容器所在的宿主机中运行, 使用容器内部的环境
  • 5, 浏览器访问测试
  • 172.16.12.134

12,项目架构演变

  • 目的: 知道项目部署架构演变过程
  • 过程:
  • 单体阶段 - > 应用/数据分离阶段 —> 页面动静分离阶段 —> 页面/数据缓存阶段 —> 应用服务集群阶段— > 数据库读写分离化 —> 存储分布式 — > 业务应用拆分 —> 业务拆分, 微服务阶段

13,项目运营

  • 目的: 知道公司常见的运营指标
  • 指标:
  • IP, PV, UV, VV, BR, CR

14,网站优化

  • 目的: 知道一些常见的网站优化的方式
  • 方式:
  • 1, 缓存层方面
  • 2, 代理层方面
  • 3, 项目后端web访问
  • 4, 数据层方面
  • 5, 存储层方面