zoukankan      html  css  js  c++  java
  • docker安装优化

    1、优化

    #关闭防火墙

    [root@docker03 ~]# systemctl stop firewalld.service
    [root@docker03 ~]# systemctl disable firewalld.service
    

    #Yum缓存

     1 [root@docker02 ~]# vim /etc/yum.conf
     2 [main]
     3 cachedir=/var/cache/yum/$basearch/$releasever
     4 keepcache=1    修改为1
     5 debuglevel=2
     6 logfile=/var/log/yum.log
     7 exactarch=1
     8 obsoletes=1
     9 gpgcheck=1
    10 plugins=1
    11 installonly_limit=5
    12 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
    13 distroverpkg=centos-release

    #关闭SELINUX

    1 [root@docker03 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    2 [root@docker03 ~]# setenforce 0

    2、安装docker

    1 [root@docker03 ~]# yum install docker
    2 [root@docker03 ~]# systemctl enable docker.service
    3 [root@docker03 ~]# systemctl start docker.service

    #修改docker为direct-lvm

    docker storage driver之devicemapper

    1、基于Linux内核中的DeviceMapper框架实现,该框架实现了物理存储设备与虚拟存储设备的映射,或虚拟设备与虚拟设备之间的映射。这使得用户能够用该框架来实现磁盘的自由、动态的划分。LVM2,software RAIDs和dm-cryptdisk encryption等都是基于该框架的实现。更为重要的是,Device Mapper框架中提供两个功能,thin-provisioning和snapshot。
    2、thin-provisioning,类似于虚拟内存,提供给使用者的空间只有在使用者进行写操作时才真正进行分配。假设使用者有一块100g的thin块设备,使用了20g,实际系统提供的大小就是20g,只有当使用者进行存储操作时才分配更多的空间,直到100g。
    3、snapshot,快照,是一种COW策略的实现,假设从A设备做快照得到B设备时,并未对A进行完整拷贝,而是当对B设备进行写操作时,才将需要改变的那部分做属于B设备的拷贝。
    4、devicemapper利用了该框架中的thin-provisioning和snapshot实现了镜像的分层结构和存储优化。在用devicemapper作为graphdriver的docker中,每个镜像和容器都对应一个设备,通过对镜像做snapshot操作得到容器,所以容器中拥有镜像的内容且操作这些内容不影响镜像本身,因为容器和镜像对应不同的设备。
    5、devicemapper有两种模式可选,loop-lvm和direct-lvm。devicemapper的大致思路是,先通过虚拟化技术得到一个thin-pool设备(可理解成一个资源池),接着在thin-pool上建立一个基础设备,此后docker上所有镜像和容器都是基于此设备的snapshot。两个模式的区别就在与建立thin-pool的方法不同。

    loop-lvm:

    • 创建两个稀疏文件data和metadata
    • 将这两个文件映射成两个块设备(loopback块设备)
    • 将两个设备通过内核中Device Mapper映射成thin-pool

    注意!该模式不推荐用于生产环境,因为该模式在宿主机跑高密度容器数量的话,性能下降急剧,生产环境中一台宿主机不可能只跑单个容器

    direct-lvm:

    (利用了基于Device Mapper的LVM)

    • 将空余块设备(可以是分区)创建成physical volume(pv)
    • 在由这些PV组成volume group(vg)
    • 从vg中建立两个logical volume(lv),data和matedata
    • 将data和matedata映射成thin-pool

    演示:

     1 [root@docker03 ~]# docker info
     2 Containers: 0
     3  Running: 0
     4  Paused: 0
     5  Stopped: 0
     6 Images: 0
     7 Server Version: 1.12.6
     8 Storage Driver: devicemapper
     9  Pool Name: docker-253:0-134322081-pool
    10  Pool Blocksize: 65.54 kB
    11  Base Device Size: 10.74 GB
    12  Backing Filesystem: xfs
    13  Data file: /dev/loop0         #docker info查看的为设备文件
    14  Metadata file: /dev/loop1  #docker info查看的为设备文件

    1、创建硬盘  (增加的一块新的存储设备)

    1 [root@docker03 ~]# parted /dev/sdb
    2 GNU Parted 3.1
    3 Using /dev/sdb
    4 Welcome to GNU Parted! Type 'help' to view a list of commands.
    5 (parted) mklabel msdos
    6 (parted) mkpart primary 2048s 100%
    7 (parted) toggle 1 lvm
    8 (parted) quit

    2、创建PV/VG

    1 [root@docker03 ~]# pvcreate /dev/sdb1
    2   Physical volume "/dev/sdb1" successfully created.
    3 [root@docker03 ~]# vgcreate vg_sxf /dev/sdb1
    4   Volume group "vg_sxf" successfully created

    3、变更配置

    1 [root@docker03 ~]# vim /etc/sysconfig/docker-storage-setup
    2 # Edit this file to override any configuration options specified in
    3 # /usr/lib/docker-storage-setup/docker-storage-setup.
    4 #
    5 # For more details refer to "man docker-storage-setup"
    6 VG=vg_sxf
    7 DATA_SIZE=90%FREE

    4、重新生成配置

    1 [root@docker03 ~]# systemctl stop docker
    2 [root@docker03 ~]# rm -rf /var/lib/docker/
    3 [root@docker03 ~]# docker-storage-setup
    4   Using default stripesize 64.00 KiB.
    5   Rounding up size to full physical extent 104.00 MiB
    6   Logical volume "docker-pool" created.
    7   Logical volume vg_sxf/docker-pool changed.
    8 [root@docker03 ~]# systemctl start docker.service

    5、查看修改后的信息

     1 [root@docker03 ~]# docker info
     2 Containers: 0
     3  Running: 0
     4  Paused: 0
     5  Stopped: 0
     6 Images: 0
     7 Server Version: 1.12.6
     8 Storage Driver: devicemapper
     9  Pool Name: vg_sxf-docker--pool
    10  Pool Blocksize: 524.3 kB
    11  Base Device Size: 10.74 GB
    12  Backing Filesystem: xfs
    13  Data file:
    14  Metadata file:
    15  Data Space Used: 20.45 MB
    16  Data Space Total: 96.41 GB
    17  Data Space Available: 96.39 GB
    18  Metadata Space Used: 90.11 kB
    19  Metadata Space Total: 109.1 MB
    20  Metadata Space Available: 109 MB
    21  Thin Pool Minimum Free Space: 9.641 GB
    22  Udev Sync Supported: true

     #配置overlay2存储配置

    overlay2原生支持128层,这提供docker build和docker commit更好的性能支持。

    mkdir -p /data0/docker/var
    ln -s /data0/docker/var /var/lib/docker
    mkdir /etc/docker
    vim /etc/docker/daemon.json
    {
        "storage-driver" : "overlay2",
        "storage-opts": [ "overlay2.override_kernel_check=true" ],
        "registry-mirrors": ["https://****.mirror.aliyuncs.com"],
        "live-restore" : false
    }
    碎片化时间学习和你一起终身学习
  • 相关阅读:
    JQuery中的回调对象
    CSS中的视觉格式化模型
    css中的选择器
    浅谈css中的position
    python-24: re 模块 之二 re方法及反斜杠
    python-23 xml.etree.ElementTree模块
    python-22 eval json pickle shelve 之间差别
    python-21 os 模块
    python-18: datetime 模块
    python-16: time 模块 之二
  • 原文地址:https://www.cnblogs.com/xzkzzz/p/7467654.html
Copyright © 2011-2022 走看看