dockerfile 指令 介绍

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, 存储层方面
原文地址:https://www.cnblogs.com/pywjh/p/14929928.html