CentOS 7运行Docker1.12.0 修改Docker的默认文件系统为overlay或aufs

在CentOS Docker的默认文件系统是devicemapper,但是这个貌似有点不好,具体不好的地方在于DC/OS官网给出的解释是会出现unknown issue并且不能再Docker里面运行Docker,DeviceMapper默认情况下创建loop-lvm的方式来构建镜像和容器的snapshots。但是在生产环境下Docker官方建议采用直连的lvm卷来构建镜像和容器,然后在启动Docker Daemon的时候使用如下方式来加载:

{
     "storage-driver": "devicemapper",
     "storage-opts": [         "dm.thinpooldev=/dev/mapper/docker-thinpool",         "dm.use_deferred_removal=true"
     ]
 }

下面是CentOS的默认启动之后的样子

[root@DS-VM-Node200 ~]# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.12.0
Storage Driver: devicemapper
 Pool Name: docker-253:3-16797760-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 11.8 MB
 Data Space Total: 107.4 GB
 Data Space Available: 10.68 GB
 Metadata Space Used: 581.6 kB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.147 GB
 Thin Pool Minimum Free Space: 10.74 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.107-RHEL7 (2015-10-14)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: null host bridge overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 3.10.0-327.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 3.451 GiB
Name: DS-VM-Node200.cluster.com
ID: 2DEU:CRW4:4GFU:47F6:ROAV:QZ43:H4L3:YBH7:UO24:YA3Y:GMBA:7ZEA
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Insecure Registries:
 127.0.0.0/8
[root@DS-VM-Node200 ~]#

我们先来修改成OverlayFS的默认文件系统

[root@DS-VM-Node200 ~]# echo "overlay" > /etc/modules-load.d/overlay.conf
[root@DS-VM-Node200 ~]# cat /proc/modules|grep overlay
[root@DS-VM-Node200 ~]# reboot  #重启系统让修改参数生效

[root@DS-VM-Node200 ~]# mkdir -p /etc/systemd/system/docker.service.d
[root@DS-VM-Node200 ~]# cat > /etc/systemd/system/docker.service.d/docker_boot.conf <<-EOF
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -D -s overlay
EOF
[root@DS-VM-Node200 ~]# cat /etc/systemd/system/docker.service.d/docker_boot.conf
[Service]
ExecStart=/usr/bin/docker daemon -D -s overlay
[root@DS-VM-Node200 ~]#

[root@DS-VM-Node200 ~]# systemctl daemon-reload
[root@DS-VM-Node200 ~]# systemctl start docker.service
[root@DS-VM-Node200 ~]# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.12.0
Storage Driver: overlay
 Backing Filesystem: xfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: overlay bridge null host
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 3.10.0-327.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 3.451 GiB
Name: DS-VM-Node200.cluster.com
ID: 2DEU:CRW4:4GFU:47F6:ROAV:QZ43:H4L3:YBH7:UO24:YA3Y:GMBA:7ZEA
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 15
 Goroutines: 22
 System Time: 2016-08-10T23:55:20.643632194+08:00
 EventsListeners: 0
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Insecure Registries:
 127.0.0.0/8
[root@DS-VM-Node200 ~]#

下面我们来修改成aufs的,这里首先需要把内核换成本站自己编译的内核才可以。(内核源支持CentOS 6 CentOS7)

[root@DS-VM-Node200 ~]# curl -Lks http://mirrors.dwhd.org/kernel-ml-aufs/kernel-ml-auf.repo >/etc/yum.repos.d/kernel-ml-aufs.repo
[root@DS-VM-Node200 ~]# yum -y remove kernel-headers kernel-tools kernel-tools-libs
[root@DS-VM-Node200 ~]# yum -y install kernel-ml-aufs kernel-ml-aufs-headers kernel-ml-aufs-devel kernel-ml-aufs-tools-libs-devel perf
[root@DS-VM-Node200 ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (4.7.0-1.el7.centos.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-c164c19fb49d4b4aa3a60f1bd6ac6a8c) 7 (Core)
[root@DS-VM-Node200 ~]# grub2-set-default 0         #将0设置为启动
[root@DS-VM-Node200 ~]# sed -i '/\[main\]/a exclude=kernel*' /etc/yum.conf
[root@DS-VM-Node200 ~]# reboot

[root@DS-VM-Node200 ~]# cat /proc/version
Linux version 4.7.0-1.el7.centos.x86_64 (mockbuild@DT-VM-Node169.cluster.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) ) #1 SMP Fri Jul 29 05:38:16 CST 2016
[root@DS-VM-Node200 ~]# cat > /etc/systemd/system/docker.service.d/docker_boot.conf <<-EOF
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -D -s aufs
EOF
[root@DS-VM-Node200 ~]# systemctl daemon-reload
[root@DS-VM-Node200 ~]# systemctl start docker.service
[root@DS-VM-Node200 ~]# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.12.0
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: xfs
 Dirs: 0
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge null host overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.7.0-1.el7.centos.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 3.858 GiB
Name: DS-VM-Node200.cluster.com
ID: 2DEU:CRW4:4GFU:47F6:ROAV:QZ43:H4L3:YBH7:UO24:YA3Y:GMBA:7ZEA
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 14
 Goroutines: 22
 System Time: 2016-08-11T00:07:19.40686965+08:00
 EventsListeners: 0
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Insecure Registries:
 127.0.0.0/8
[root@DS-VM-Node200 ~]#

时间: 2024-11-01 22:07:38

CentOS 7运行Docker1.12.0 修改Docker的默认文件系统为overlay或aufs的相关文章

Docker打包 Asp.Net Core应用,在CentOS上运行

本文主要介绍下运用docker虚拟技术打包Asp.net core应用. Docker作为一个开源的应用容器引擎,近几年得到广泛的应用,使用Docker我们可以轻松实现应用的持续集成部署,一次打包,到处运行. 开篇借用百科上对docker的介绍.     Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 方便大家学习: http://www

docker 使用centos 镜像 运行 javaweb ,并重新生成镜像

Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种"轻量级"容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公司开始逐步使用 Docker 来替换现有的虚拟化平台了.作为一名 Java 程序员,我们是时候一起把 Docker 学起来了! 本文会对虚拟化技术与 Docker 容器技术做一个对比,然后引出一些 Docker 的名词术语,比如:容器.镜像等,随后将使用 Docker 搭建一个 JavaWeb 运行环境,最后

为了性能,请不要在CentOS中运行Docker,尽量用Ubuntu

本文讲的是为了性能,请不要在CentOS中运行Docker,尽量用Ubuntu,[编者的话]生产环境里Docker运行在CentOS上似乎是大家的共识,但本文的作者通过自己在CentOS上使用Docker比在Ubuntu上性能缓慢的体验差异,决定转向在Ubuntu上使用Docker.你们是否对Docker运行在CentOS或Ubuntu上的性能差异有自己的见解,下面让我们看看作者的理由. 多年来,我一直是一个铁杆的CentOS用户.我很喜欢它最小安装创建的轻量环境,直观的安装过程和包管理软件.D

基于docker1.12创建swarm集群

       Docker 1.12 在 2016 年 7 月 28 日正式 GA,除了大量的在使用上的改进和 bug 修复外,最引人瞩目的是Docker原生支持了 Swarm 模式,而不是将Swarm作为一个容器对集群进行管理. 而docker1.12的操作命令并不向下兼容,于是过去所有创建swarm集群的文档都不能参考了,本文描述了基于docker1.12版本创建Swarm集群的过程. 1.主机环境 在阿里云上申请三个vpc网络的ECS,安装centos7.0的镜像,ip和角色分配如下: 1

花米徐整理的卸载docker1.12并安装docker17.06的过程

  1.在中国安装docker请注意 这里面需要注意的是,在参考官方安装文档配置 Linux 源的时候,如果是国内服务器,要将其中的 https://download.docker.com/linux/ 替换为 https://mirrors.aliyun.com/docker-ce/linux/. 比如,文档如果要求执行下面的命令: $ sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ub

Hive-0.12.0的Web接口HWI安装、配置、改造及使用

使用Hive的HWI接口,可以通过在Web页面上提交HQL查询操作,并浏览查询结果数据.默认情况下,HWI只支持浏览结果数据,不能够下载查询结果文件(当然,HWI可能也是考虑通过Web下载大量的结果数据,对服务器造成压力,或者处于安全方面的考虑).我们对HWI进行了简单的改造,改造内容主要是增加了一个内置的文件服务器,可以通过页面进行查询,然后下载结果文件. HWI安装配置 首先,要保证Hadoop集群正常运行,Hive能够正常使用. 先要安装Ant,如下所示: 1 wget http://mi

Microsoft.Jet.OLEDB.4.0 改成Microsoft.ACE.OLEDB.12.0

问题描述 Microsoft.Jet.OLEDB.4.0 改成Microsoft.ACE.OLEDB.12.0 运行环境: windows 10 专业版 64位 .SQL2008 在sql2008新建数据库的时候提示"因为 OLE DB 访问接口 'Microsoft.Jet.OLEDB.4.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询" 电脑上已安装好了Microsoft.ACE.OLEDB.12.0 .现在就差把链接串口Microsoft.Jet.OLEDB

用Advanced Installer制作DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版详解

原文:用Advanced Installer制作DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版详解                  关于 DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版---------------------------------------------------------     基于 官方原版的安装包 +

轻松使用Docker容器运行Metasploit框架轻松使用Docker容器运行Metasploit框架

本文讲的是轻松使用Docker容器运行Metasploit框架轻松使用Docker容器运行Metasploit框架,[编者的话]Lenny Seltzer是信息安全技术方面的资深专家与企业家.他涉及的领域包括紧急事件响应,云服务和产品管理.Lenny在NCR集团专注于客户安全操作.他还在SANS学院教授数字取证技术与反间谍软件.Lenny积极参与各种会议,撰写相关文章和书籍. Metasploit是一款强大的渗透测试开源框架.不论你是专业人事或仅仅是爱好者,你都可以轻松的在Docker容器中运行