什么是Docker以及为什么要在CentOS 7上用
Docker是一个开源的容器化平台,可以把应用程序和它的依赖环境打包到一起,形成一个独立的容器。这样做的好处很明显:你不需要担心换一台服务器就运行不起来,也不用花大量时间去配置各种环境。CentOS 7作为很多服务器的主流操作系统红旗linux官网,搭配Docker使用,能让你的项目部署变得异常简单。
我接触容器化技术已经有好几年,从最早的docker run命令到现在的docker-compose编排,确实见证了部署方式的巨大变化。CentOS 7的稳定性和Docker的便捷性结合,几乎可以满足大部分中小型项目的需求。

CentOS 7安装Docker需要什么条件
操作系统版本必须满足一定要求。CentOS 7的版本号需要是7.3或更高,这点可以在终端里通过cat /etc/redhat-release查看。如果你发现版本太低,建议先升级系统。
硬件方面没有太多限制,64位架构的CPU是必须的,内存建议至少有1GB空闲内存给Docker使用。如果机器内存特别小,比如只有512MB,运行几个容器就会卡死,所以别省这点硬件成本。

内核版本也很关键。Docker对Linux内核版本有要求linux安全加固,CentOS 7默认内核是3.10,虽然能运行Docker,但我强烈建议升级到较新的内核版本,比如4.x或5.x系列。升级内核后性能会稳定很多,特别是在网络和存储方面。
如何在CentOS 7上正确安装Docker
最稳妥的方式是使用官方提供的yum源。不要用系统自带的源里面的老版本Docker,那个版本太旧,很多功能不支持。先卸载旧的Docker版本,包括docker、docker-common、docker-engine这些包。

然后安装yum-utils工具包,通过它来添加Docker的官方源。命令很简单,一条yum install -y yum-utils就搞定。接着执行yum-config-manager --add-repo ,这样你的系统就能获取最新的Docker版本了。
安装Docker引擎的时候,我建议直接装docker-ce和docker-ce-cli这两个包。containerd.io也会被自动安装上。安装完成后记得启动Docker服务,并且设置成开机自启centos7 docker,命令分别是systemctl start docker和systemctl enable docker。
CentOS 7上Docker使用中的常见坑

启动Docker服务可能会遇到报错。最常见的是SELinux导致的权限问题,这时候可以临时把SELinux设置为permissive模式,或者写规则放行Docker。永久关闭SELinux虽然一劳永逸,但安全方面会打折扣,自己权衡。
防火墙规则也容易让人头疼。Docker会自动创建iptables规则,如果CentOS 7的firewalld也在运行,两者可能冲突。我习惯的做法是关闭firewalld,完全用Docker的iptables管理网络,简单直接。
还有存储驱动的问题。CentOS 7默认的存储驱动是overlay2,这个没问题。但如果你用的是老版本Docker,可能默认是devicemapper,这个驱动性能差,而且容易出bug。务必确认存储驱动是overlay2,跑docker info就能看到。
我为什么推荐CentOS 7用户坚持用Docker

很多新手会觉得用虚拟机也可以隔离环境,何必非要容器化。但虚拟机占用资源太大,启动速度慢,而且维护成本高。Docker容器启动只需要几秒钟,占用空间也很小centos7 docker,一个镜像通常只有几百兆。
CentOS 7本身对Docker的支持相当成熟,社区文档丰富,遇到问题基本都能搜到解决方案。而且国内很多云服务器的镜像都是CentOS 7,你从这个环境迁移到云上,完全无缝衔接。
如果你需要搭建开发环境、测试环境或者生产环境,Docker配上CentOS 7绝对能让你少走弯路。我见过太多人在环境配置上浪费大量时间,用上Docker后,一个docker-compose.yml文件就能搞定全套服务。
