部署(3)- docker进阶

1,网络模式说明

  • 目的:了解常见的4种网络模式
  • 常见的网络模式:
    • 1, 主机模式,host模式
      • 创建方式:
        • docker run -itd —name=容器名字 —network=host 镜像名
      • 特点: 和宿主机的网卡一样,方便进行部署使用
    • 2, 桥接模式,bridge模式
      • 创建方式:
        • docker run -itd —name=容器名字 —network=bridge 镜像名
      • 特点: 只有两个网卡,并且多个桥接模式的容器,在一个网段,方便搭建集群
    • 3, 空模式,none模式
      • 创建方式:
        • docker run -itd —name=容器名字 —network=none 镜像名
      • 特点: 之后回环地址, 不能联网,在需要绝对安全情况下使用
    • 4, container模式
      • 创建方式:
        • docker run -itd —name=容器名字 —network=container:容器 镜像名
      • 特点: 复制其他容器的网卡信息

2,自定义网络模式

  • 目的: 可以对网络模式进行增删改查操作, 并能够进行自定义操作
  • 操作命令:
    • docker network ls :查看所有
    • docker network create: 创建
    • docker network inspect: 查询网络信息
    • docker network disconnect: 断开容器链接
    • docker network connect: 让容器重新链接
    • docker network rm: 移除网络模式
  • 自定义格式:
    • docker network create -d 原有的网络模式 新的网络
    • 作用: 单独定义出一组网络模式,管理一组容器

3,Dockerfile介绍

  • 目的:知道dockerfile的作用, 以及常见的指令
  • dockerfile作用:
    • 快速构建一个镜像,或者容器的,用来进行部署,或者提供给其他开发人员使用
  • 常见指令:

4, 常见指令

  • 目的: 可以通过Dockerfile中的指令创建新的镜像,和容器

  • 操作流程:

    • 1, from, maintainer指令, 构建Dockerfile,创建新的镜像

      • a,创建Dockerfile文件

      • #1,指定原镜像
        from ubuntu_python
        
        #2,指定镜像的作者
        maintainer 'banzhang'
        
      • b,指定脚本

      • docker build -t 新镜像名 .

  • 2,add,copy命令

    • a,创建Dockerfile文件

      • #1,原镜像
        from ubuntu_python
        
        #2,指定镜像的作者
        maintainer 'banzhang'
        
        #3,添加文件
        #add ./a.txt /home
        #add ./b.tar /home
        #add ./c    /home
        
        #4,添加文件copy
        copy ./a.txt /home
        copy ./b.tar /home
        copy ./c    /home
        
      
      
    • b,构建镜像

      • docker build -t 新镜像名 .
    • add注意点:

      • 1, 如果是压缩包,自动解包
      • 2, 如果是文件夹,那么将文件夹内部的内容直接导入进来
    • copy注意点:

      • 1, 如果是压缩包,不会自动解包
      • 2, 如果是文件夹,那么将文件夹内部的内容直接导入进来
  • 3,run命令

    • 1,编写Dockerfile

      • #1,原镜像
        from ubuntu_python
        
        #2,指定镜像的作者
        maintainer 'banzhang'
        
        #3,添加文件
        #add ./a.txt /home
        #add ./b.tar /home
        #add ./c    /home
        
        #4,添加文件copy
        #copy ./a.txt /home
        #copy ./b.tar /home
        #copy ./c    /home
        
        #5,创建文件夹
        run mkdir banzhang
        run touch haha.txt
        
      
      
    • 2,构建

      • docker build -t 新镜像名 .

5, helloworld部署

  • 目的:可以使用expose来运行django程序,对外开发端口

  • 操作流程:

    • 1,编写Dockerfile文件(workdir, expose)

      • #1,原镜像
        from ubuntu_python
        
        #2,指定镜像的作者
        maintainer 'banzhang'
        
        #3,添加文件
        #add ./a.txt /home
        #add ./b.tar /home
        #add ./c    /home
        
        #4,添加文件copy
        #copy ./a.txt /home
        #copy ./b.tar /home
        #copy ./c    /home
        
        #5,创建文件夹
        #run mkdir banzhang
        #run touch haha.txt
        
        #6,workdir进入到home中
        workdir /home
        
        #7,expose对外开发端口
        expose 8000
        
    • 2,构建镜像

      • docker build -t 新镜像名 .
    • 3,创建容器

      • docker run -it --name=ubuntu1 -p 7001:8000 new_ubuntu1 /bin/bash
    • 4,创建helloworld程序

      • django-admin startproject test1
    • 5,访问测试

      • python3 manage.py runserver 0.0.0.0:8000
      • 修改配置文件settings.py允许所有的ip地址访问

6, hellworld部署(dockerfile),entrypoint指令

  • 目的:可以使用dockerfile的形式部署helloworld

    • 操作流程:

      • 1, 编写dockerfile

        • #1,源镜像
          from ubuntu_python
          
          #2,指定作者
          maintainer laowang
          
          #3,创建文件
          add ./demo01.tar /home
          
          #4,进入项目中
          workdir /home/demo01
          
          #5,开放端口
          expose 8000
          
          #6,运行程序
          entrypoint python3 manage.py runserver 0.0.0.0:8000
          
      • 2, 构建镜像

        • docker build -t 新镜像名 .
      • 3, 创建容器

        • docker run -d --name=hello1 -p 7002:8000 new_ubuntu2
    • 注意点:

      • entrypoint: 可以运行python程序

7,项目架构演变

  • 目的: 知道web项目的架构演变过程
  • 初级阶段:
    • 单体阶段 -> 数据分离 -> 动静分离 -> 缓存阶段
  • 后期阶段:
    • 集群->分库分表->分布式->业务拆分(微服务)

8,架构部署(文档)

  • 目的: 知道部署的两个方向
  • 一级定位:核心组成部分
    • web 、数据库、存储层
  • 二级定位:功能增强部分
    • web缓存、代理、数据库缓存

9,网站分析(文档)

  • 目的:知道开发中常见的网站交流术语和分析工具
  • 操作流程:
    • 见文档

10,网站优化(文档)

  • 目的:知道网站优化的方向
  • 优化方向:
    • 数据库
    • 缓存
    • 代码层
    • 代理层
    • ….

11,项目总结

  • 见mindnode图解

12,生产者,消费者,rabbitmq

  • 目的:知道生产者,消费者模型,以及rabbitmq的作用
  • 模型:
    部署(3)- docker进阶_第1张图片
  • 作用:
    • 作用存储消息的容器(消息队列)
    • 特点:
    • 消息队列是消息在传输的过程中保存消息的容器
    • 现在主流消息队列有:RabbitMQActiveMQKafka等等。
    • RabbitMQ和ActiveMQ比较:
      • 系统吞吐量:RabbitMQ好于ActiveMQ
      • 持久化消息:RabbitMQActiveMQ都支持
      • 高并发和可靠性:RabbitMQ好于ActiveMQ
    • RabbitMQ和Kafka:
      • 系统吞吐量:RabbitMQ弱于Kafka
      • 可靠性和稳定性:RabbitMQ好于Kafka比较
      • 设计初衷:Kafka是处理日志的,是日志系统,所以并没有具备一个成熟RabbitMQ应该具备的特性。

13,rabbitmq使用

  • 目的: 可以下载镜像,使用rabbitmq
  • 操作流程:
    • 见笔记文档

14,阿里云部署

  • 目的: 可以部署django程序到阿里云
  • 操作流程:
    • 见笔记文档

15,接口文档

  • 目的: 知道接口文档的编写格式

你可能感兴趣的:(Docker)