1、优化

#关闭防火墙

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

#Yum缓存

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

#关闭SELINUX

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

2、安装docker

 [root@docker03 ~]# yum install docker
[root@docker03 ~]# systemctl enable docker.service
[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

演示:

 [root@docker03 ~]# docker info
Containers:
Running:
Paused:
Stopped:
Images:
Server Version: 1.12.
Storage Driver: devicemapper
Pool Name: docker-:--pool
Pool Blocksize: 65.54 kB
Base Device Size: 10.74 GB
Backing Filesystem: xfs
Data file: /dev/loop0 #docker info查看的为设备文件
Metadata file: /dev/loop1 #docker info查看的为设备文件

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

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

2、创建PV/VG

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

3、变更配置

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

4、重新生成配置

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

5、查看修改后的信息

 [root@docker03 ~]# docker info
Containers:
Running:
Paused:
Stopped:
Images:
Server Version: 1.12.
Storage Driver: devicemapper
Pool Name: vg_sxf-docker--pool
Pool Blocksize: 524.3 kB
Base Device Size: 10.74 GB
Backing Filesystem: xfs
Data file:
Metadata file:
Data Space Used: 20.45 MB
Data Space Total: 96.41 GB
Data Space Available: 96.39 GB
Metadata Space Used: 90.11 kB
Metadata Space Total: 109.1 MB
Metadata Space Available: MB
Thin Pool Minimum Free Space: 9.641 GB
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
}

docker安装优化的更多相关文章

  1. 002.Docker安装部署

    一 docker安装-CentOS系统 1.1 docker自动安装脚本 root@docker:~# wget -qO- https://get.docker.com/ | sh 或—— root@ ...

  2. 利用Docker安装Web前端性能测试工具Sitespeed.io

    目录结构 一.Sitespeed.io概述 1.Sitespeed.io简介 2.Sitespeed.io使用场景 二.Sitespeed.io的安装和使用 1.安装Sitespeed.io 2.连接 ...

  3. 调度系统Airflow1.10.4调研与介绍和docker安装

    Airflow1.10.4介绍与安装 现在是9102年,8月中旬.airflow当前版本是1.10.4. 随着公司调度任务增大,原有的,基于crontab和mysql的任务调度方案已经不太合适了,需要 ...

  4. Docker 安装mysql、oracle

    来源:唐山网站优化 Docker 安装mysql.oracle 使用ssh工具登录docker docker 的ip一般默认为192.168.99.100可以通过安装docker-machine之后, ...

  5. 理解Docker(1):Docker 安装和基础用法

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  6. docker安装

    系统要求:需要一个64位的centos7操作系统和版本3.10或更高版本的Linux内核 开始安装: uname -r   //查看内核版本yum -y update //更新系统更新到最新 #安装d ...

  7. 2. Docker - 安装

    一.Docker介绍 1. Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上, 也可以实现虚拟化. 容器时完全使用沙 ...

  8. Docker 安装部署

    Docker学习笔记 一.Ubuntu Docker 安装 (1).获取最新版本Docker安装包 lyn@lyn:/data/docker$ sudo wget -qO- https://get.d ...

  9. docker 安装

    Docker使用了一种叫AUFS的文件系统,这种文件系统可以让你一层一层地叠加修改你的文件,最底下的文件系统是只读的,如果需要修改文件,AUFS会增加一个可写的层(Layer),这样有很多好处,例如不 ...

随机推荐

  1. BZOJ4003[JLOI2015]城池攻占——可并堆

    题目描述 小铭铭最近获得了一副新的桌游,游戏中需要用 m 个骑士攻占 n 个城池. 这 n 个城池用 1 到 n 的整数表示.除 1 号城池外,城池 i 会受到另一座城池 fi 的管辖, 其中 fi ...

  2. P1216 数字三角形

    题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左下方的点也可以到达右下方的点. 7 3 8 8 1 0 2 7 4 4 4 5 ...

  3. Number Sequence POJ - 1019 递推 数学

    题意 1 12 123 1234 12345 ....这样的序列 问第n位数字是几   是数字! 1-9! 思路:递推关系 主要是位数的计算   用a[i]=a[i-1]+(int)log10((do ...

  4. 配置Robot Framework 环境时如何查看wxPython是否成功安装

    配置Robot Framework,win10系统,安装版本分别如下:

  5. 【BZOJ3669】【NOI2014】魔法森林 LCT

    题目描述 给你一个\(n\)个点\(m\)条边的图,每条边有两个边权\(a,b\).请你找出从\(1\)到\(n\)一条路径,使得这条路径上边权\(a\)的最大值\(+\)边权\(b\)的最大值最小. ...

  6. 【BZOJ4872】【SHOI2017】分手是祝愿 期望DP

    题目大意 有\(n\)盏灯和\(n\)个开关,初始时有的灯是亮的,有的灯是暗的.按下第\(i\)个开关会使第\(j\)盏灯的状态被改变,其中\(j|i\).每次你会随机操作一个开关,直到可以通过不多于 ...

  7. [WC2010]重建计划(分数规划+点分治+单调队列)

    题目大意:给定一棵树,求一条长度在L到R的一条路径,使得边权的平均值最大. 题解 树上路径最优化问题,不难想到点分治. 如果没有长度限制,我们可以套上01分数规划的模型,让所有边权减去mid,求一条路 ...

  8. Kafka史上最详细原理总结

    https://blog.csdn.net/ychenfeng/article/details/74980531 Kafka Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(pa ...

  9. CF集萃1

    因为cf上一堆水题,每个单独开一篇博客感觉不太好,就直接放一起好了. CF1096D Easy Problem 给定字符串,每个位置删除要代价.求最小代价使之不含子序列"hard" ...

  10. A1002. A+B for Polynomials

    This time, you are supposed to find A+B where A and B are two polynomials. Input Each input file con ...