• Docker资源限制


    为什么使用容器

    docker设计目标:
    提供简单的应用打包工具
    开发人员和运维人员职责逻辑分离
    多环境保持一致性
    轻量级
    
    
    kubernetes设计目标:
    集中管理所有容器
    资源编排
    资源调度
    弹性伸缩
    资源隔离
    

    容器与虚拟机

    虚拟机比容器多了一层完整的os系统
    docker寄居于底层系统之上,能够节省资源开销.
    

    docker的资源隔离和网络限制

    1. namespace 实现了资源的隔离,分别是:
       UTS,主机和域名隔离
       IPC,消息队列,共享内存隔离
       PID,进程隔离
       Mount, 文件系统隔离
       User,用户和用户组隔离
       
    2. cgoups:  资源限制
       进程资源限制
       CPU使用限制
       磁盘I/O限制
       
    3. UFS: 联合文件系统.  
    

    安装docker

    centos7.x :
    # 安装依赖包
    yum install -y yum-utils device-mapper-persistent-data lvm2
    
    # 添加Docker软件包源
    yum-config-manager 
    --add-repo 
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    # 安装Docker CE
    yum install -y docker-ce
    
    # 启动Docker服务并设置开机启动
    systemctl start docker
    systemctl enable docker
    
    阿里云源:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
      
    #添加源 : 
    wget -O /etc/yum.repos.d/ali_docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
      
      
    镜像加速源配置1 官方镜像:
    [root@master yum.repos.d]# cat /etc/docker/daemon.json
    {
      "registry-mirrors": ["hhttp://f1361db2.m.daocloud.io"]
    }
    
    ----------------------------------------------------------------
    镜像加速源配置2 阿里云镜像[稳定]:
    [root@master yum.repos.d]# cat >/etc/docker/daemon.json<<eof
    {
      "registry-mirrors": ["https://ajvcw8qn.mirror.aliyuncs.com"]
    }
    eof
    ----------------------------------------------------------------
    镜像加速源配置3 网易镜像:
    #配置:
    {
      "registry-mirrors": ["http://hub-mirror.c.163.com"]
    }
    
    加速配置与生效方法:
    cat >/etc/docker/daemon.json<<EOF
    {
      "registry-mirrors": ["http://hub-mirror.c.163.com"]
    }
    EOF
    #启动:
    systemctl restart docker
    
    
    # 安装Docker CE
    yum install -y docker-ce-18.03.1.ce-1.el7.centos
    
    #安装特定版本docker
    yum list docker-ce --showduplicates | sort -r 
    列出后使用 yum install -y docker-ce-18.03.1.ce-1.el7.centos 安装指定版本即可
    
    # 启动Docker服务并设置开机启动
    systemctl start docker
    systemctl enable docker
    
    #镜像加速配置完后需要:
    systemctl daemon-reload
    systemctl restart docker
    
    ### 注意 4台服务器均要安装docker-ce 它作为k8s容器引擎是必备的.
    

    镜像加速

    ##配置docker镜像加速
    vi /etc/docker/daemon.json
    
    cat > /etc/docker/daemon.json <<eof
    {
      "registry-mirrors": ["https://v2ltjwbg.mirror.aliyuncs.com"]
    }
    eof
    
    
    #---------------------------------
    {
      "registry-mirrors": ["https://ajvcw8qn.mirror.aliyuncs.com"]
    }
    
    个人加速器获取地址:
    https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
    #---------------------------------
    

    镜像是什么

    镜像是一个分层存储的文件
    一个软件环境
    一个镜像可以创建N个容器
    一种标准化的交付
    一个不包含Linux内核又是一个Linux操作系统.
    
    一个Linux是由内核+文件组成的.
    Linux提供内核,docker
    

    docker默认镜像目录: /var/lib/docker/overlay2/
    官方docker镜像仓库: hub.docker.com

    创建一个容器:

    #1. 创建容器需要考虑哪些?
    1. 应用暴露
    2. 主机名,ip
    3. 数据是否持久化
    4. 是否存在变量传入
    
    #如何创建一个容器
    docker run --name a-nginx -d -p 8080:80 nginx
    将外部8080端口映射为容器内部nginx端口80
    

    运行一个镜像后,它会在工作目录中创建一个读写层的目录,元数据信息,以及日志信息.

    进入容器

    docker exec -it a-nginx bash
    docker exec -it b-nginx /bin/sh
    

    删除容器

    docker rm -f a-nginx
    

    删除镜像

     docker rmi -f a-nginx
    

    docker命令表

    --privileged=true : 用于启动容器的权限参数.

    docker run 时添加 --restart=always 作用:   启动docker的同时启动这个容器.
    例子: docker run --name b-nginx -d -p 8082:80 --restart=always nginx 
    启动docker的同时,启动这个镜像
    
    docker exec -it b-nginx /bin/sh
    

    资源限制

    -m --memory      #限制容器使用的内存
    --memory-swap    #允许交换分区到磁盘的内存
    --memory-swappiness=<0-100>  #容器使用swap的百分比,默认关闭-1
    --oom-kill-disable   #禁用oom
    --cpus           #可以使用cpu的数量[常用]
    --cpuset-cpus    #限制容器使用特定的cpu 如: 0-3 0,1
    --cpu-shares     #cpu共享(相对的权重)
    

    资源限制示例:

    #限制内存500MB 开启swap600MB 禁止被oom
    docker run -d --name nginx01 --memory="500m" --memory-swap="600m" --oom-kill-disable nginx
    
    #限制CPU示例,最多可以使用1.5个cpu
    docker run -d --name nginx02 --cpus="1.5" nginx
    
    #限制最多使用50%cpu
    docker run -d --name nginx05 --cpus=".5" nginx
    

    微信赞赏

    支付宝赞赏

  • 相关阅读:
    jquery键盘事件及keycode大全
    宝塔linux面板 切换PHP版本后,网站访问报错503 Service Unavailable解决
    WordPress设置文章页面的关键字和描述都是不同的
    如何检测远程主机上的某个端口是否开启
    宝塔面板忘记登录密码怎么办
    阿里云服务器无法访问80端口或8888等端口解决办法
    百度云虚拟主机BCH配置伪静态图文教学
    模板配置教程:Phpcms v9怎么更换模板
    短信验证码发送校验类 Redis+php
    引用类型在内存中的情况
  • 原文地址:https://www.cnblogs.com/superlinux/p/12581810.html
Copyright © 2020-2023  润新知