dockerfile 指令 介绍
1,Dockerfile介绍
- 目的: 知道dockerfile的作用, 以及dockerfile中常见的指令
- 作用:
- 1,
Dockerfile
是一个文本文档,用户可以编写很多命令生成一个新的镜像。 - 2, 使用
docker build
执行Dockerfile里面的多个命令,可以生成出镜像来
- 1,
- 指令:
- 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, 存储层方面