zoukankan      html  css  js  c++  java
  • 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, 存储层方面
  • 相关阅读:
    搭建Git本地服务器
    shutdown,init,halt,poweroff,reboot的区别和联系, pkill -kill -t tty7注销
    RHEL/CentOS/Fedora常用的 CentOS 5/6/7 yum 源(EPEL、Remi、RPMForge、RPMFusion, ius,163,sohu,阿里云)配置
    国内的一些开源镜像站汇总,EPEL源
    EditPlus 配置 Java & C/CPP 开发环境
    Nginx+Keepalived 做负载均衡器
    监控Nginx负载均衡器脚本
    Heartbeat+DRBD+NFS 构建高可用的文件系统
    数据库索引的作用和长处缺点
    【ThinkPHP学习】ThinkPHP自己主动转义存储富文本编辑器内容导致读取出错
  • 原文地址:https://www.cnblogs.com/pywjh/p/14929928.html
Copyright © 2011-2022 走看看