史上最全(全平台)docker安装方法!
2017年2月8日,docker更新到1.13.1(更新日志),此后又分为了docker CE(社区版)和docker EE(商业版)。
此处只分享docker CE安装方法,商业版多了容器资源监控和镜像扫描的功能,普通用户用不到。
如果是你是懒人,在服务器版本直接执行官方出品的一键安装脚本(脚本会区分不同的操作系统且脚本会安装体验版(edge版)而不是稳定版(stable版)且最好不要用于生产环境,脚本Github地址)。
$ sudo wget -qO- https://get.docker.com/ | bash $ # 如果上面的不行,执行下面两句 $ curl -fsSL https://get.docker.com -o get-docker.sh $ sudo sh get-docker.sh $ # 安装成功执行下面语句,如果有类似回显,说明安装成功 $ docker --version Docker version 18.06.1-ce, build e68fc7a
如果想了解更多内容以及桌面版本如何安装,请看下文!
坐稳了,系好安全带,发车!
CentOS版docker一键安装脚本
由于在CentOS下安装docker本人最常用,所以将命令写成一键安装脚本,默认安装最新稳定版,将以下内容保存成dockerIntall.sh
并执行sh dockerIntall.sh
- 非国内版,比如国外VPS(网络畅通)
#!/bin/bash # remove old version sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine # remove all docker data sudo rm -rf /var/lib/docker # preinstall utils sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # add repository sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # make cache sudo yum makecache fast # install the latest stable version of docker sudo yum install -y docker-ce # start deamon and enable auto start when power on sudo systemctl start docker sudo systemctl enable docker # add current user sudo groupadd docker sudo gpasswd -a ${USER} docker sudo systemctl restart docker
- 国内版,需要设置网络加速,国内和docker官网网络不通
#!/bin/bash # 移除掉旧的版本 sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine # 删除所有旧的数据 sudo rm -rf /var/lib/docker # 安装依赖包 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加源,使用了阿里云镜像 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 配置缓存 sudo yum makecache fast # 安装最新稳定版本的docker sudo yum install -y docker-ce # 配置镜像加速器 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-‘EOF‘ { "registry-mirrors": ["http://hub-mirror.c.163.com"] } EOF # 启动docker引擎并设置开机启动 sudo systemctl start docker sudo systemctl enable docker # 配置当前用户对docker的执行权限 sudo groupadd docker sudo gpasswd -a ${USER} docker sudo systemctl restart docker
注意:国内访问docker太慢,一般会配置加速器,此处配置的加速器是163的加速器:http://hub-mirror.c.163.com
,也可以配置阿里云的加速器。
支持的平台
桌面版本
平台 | x86_64 |
---|---|
Docker for Mac (macOS) | 支持 |
Docker for Windows (Microsoft Windows 10) | 支持 |
服务器版本
平台 | x86_64 / amd64 | ARM | ARM64/AARCH64 | IBM Power (ppc64le) | IBM Z (s390x) |
---|---|---|---|---|---|
CentOS | 支持 | 支持 | |||
Debian | 支持 | 支持 | 支持 | ||
Fedora | 支持 | 支持 | |||
Ubuntu | 支持 | 支持 | 支持 | 支持 | 支持 |
CentOS安装docker
CentOS 是RedHat Linux社区版本,其特点是相当稳定,非常适合作为服务器使用,一般没有特殊要求,我都会优先选用此Linux发行版。
系统要求
- 安装docker CE需要CentOS 7的维护版本,存档版本(没在维护的版本)不支持
- 必须开启
centos-extras
仓库,默认是打开的,如果被关闭了,需要重新打开 - 推荐使用
overlay2
存储驱动,overlay
也可以但是不推荐。overlay2
要求Linux内核为4.0+
卸载旧版本
旧版本的docker叫做docker
或者docker-engine
,如果有安装,先卸载其以及其依赖,新版本的docker叫做docker-ce
。/var/lib/docker/
目录下的镜像文件,容器,卷和网络将会被保留,不会被删除。
$ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
安装
有三种安装办法:
在软件源内添加docker,并且安装,这样安装和升级比较方便,官方推荐。
下载RPM包手动安装,手动升级,一般在与互联网隔绝的情况下使用此方法。
官方一键安装脚本,上面说过,此处不再赘述。
添加源进行安装
首先安装docker的仓库,你可以从这个仓库中安装或者升级docker。
设置仓库
- 安装依赖包,
yum-utils
提供yum-config-manager
工具,devicemapper
存储驱动需要device-mapper-persistent-data
和lvm2
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- 使用下面的命令安装稳定版仓库,即使安装最新体验版或者是测试版也需要稳定版仓库。
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 可选:体验版和测试版默认是关闭的,你可以通过下面的命令打开,不打开也不影响稳定版的使用。
$ # 打开体验版与测试版 $ sudo yum-config-manager --enable docker-ce-edge $ sudo yum-config-manager --enable docker-ce-test $ # 关闭体验版与测试版 $ sudo yum-config-manager --disable docker-ce-edge $ sudo yum-config-manager --disable docker-ce-test
注意:从docker17.06开始,稳定版也同样会被推送到体验版和测试版的仓库里
安装docker CE
- 安装最新版本的docker CE
$ sudo yum install -y docker-ce
以上命令始终安装docker CE最新版本,如果提示接受GPG key,官方说检查指纹是否是060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
,是的话,就接受,不过我在安装的过程中没有遇见。
注意:如果安装了多个docker仓库,使用yum install
或者yum update
命令时后面不跟版本信息的话,将始终安装最高版本的docker!
- 安装指定版本的docker CE
列出版本,版本号从高到低
$ yum list docker-ce --showduplicates | sort -r docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.09.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.09.0.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.06.2.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.06.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.06.0.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.03.3.ce-1.el7 docker-ce-stable docker-ce.x86_64 17.03.2.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
安装指定版本的docker CE,需要指定完整的包名称,例如安装仓库中的这个版本18.03.0.ce-1.el7.centos
,其命令为
$ sudo yum install -y docker-ce-18.03.0.ce
其他版本同理
启动docker CE
启动其实是启动docker deamon,即docker守护进程/docker引擎
$ sudo systemctl start docker
以上即是CentOS从仓库中安装docker CE的全部过程,如果需要升级的话,移除之前的docker,再重复上面的过程即可。
从RPM包安装
RPM包在没有网络的时候就特别管用了,找一台有网络的电脑下载RPM包,这个官方地址列出了所有CentOS版本的docker,选择一个进行下载。https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
比如我下载的文件叫做(在当前目录)docker-ce-18.09.0-3.el7.x86_64.rpm
执行
$ sudo yum install -y docker-ce-18.09.0-3.el7.x86_64.rpm
启动守护进程
$ sudo systemctl start docker
卸载
移除docker
$ sudo yum remove docker-ce
移除镜像,容器,卷,网络,自定义文件等
$ sudo rm -rf /var/lib/docker
Ubuntu安装docker
Ubuntu是国内乃至全球热门的Linux发行版。也是各种推荐入门Linux爱好者安装的一个Linux发行版。
系统要求
需要64bit的以下任何Ubuntu版本:
- Bionic 18.04 (LTS)
- Xenial 16.04 (LTS)
- Trusty 14.04 (LTS)
docker CE支持x86_64, armhf, s390x (IBM Z), and ppc64le (IBM Power)
架构的Ubuntu
注意:ppc64le
和s390x
架构下,只支持Xenial
以上的Ubuntu
卸载旧版本
旧版本的docker叫做docker
或者docker-engine
,如果有安装,先卸载其以及其依赖,新版本的docker叫做docker-ce
。/var/lib/docker/
目录下的镜像文件,容器,卷和网络将会被保留,不会被删除。
$ sudo apt-get remove docker docker-engine docker.io containerd runc
支持的存储驱动
Ubuntu上的docker CE支持overlay2
和aufs
存储驱动
- Linux 4.X内核极其以上才支持overlay2,并且overlay2表现的比aufs好
- Linux 3.X内核不支持overlay或overlay2,但是支持aufs
除非有特殊理由要用aufs没否则不建议,如果要使用aufs,需要额外的准备工作:
- Trusty 14.04:
$ # 安装linux-image-extra-*包,让docker支持aufs $ sudo apt-get update $ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
安装
有三种安装办法:
- 在软件源内添加docker,并且安装,这样安装和升级比较方便,推荐这种方法。
- 下载DEB包手动安装,手动升级,一般在与互联网隔绝的情况下使用此方法。
- 官方一键安装脚本,上面说过,此处不再赘述。
添加源进行安装
首先安装docker的仓库,你可以从这个仓库中安装或者升级docker。
设置仓库
- 升级apt包索引
$ sudo apt-get update
- 安装能够让apt使用HTTPS的包
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
- 添加官方的GPG key
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
查看现在是否拥有了指纹9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
的密匙,执行下面搜索命令,如果有类似回显说明拥有此密匙。
$ sudo apt-key fingerprint 0EBFCD88 pub 4096R/0EBFCD88 2017-02-22 Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid Docker Release (CE deb) <[email protected]> sub 4096R/F273FCD8 2017-02-22
- 设置稳定版源
必须安装稳定版源,即使安装体验版或者测试版也需要稳定版源,不同架构的机器需要不同安装命令,lsb_release -cs
命令会返回是哪种Debian发行版,比如Xenial
,如果想安装体验版(edge)或者测试版(test),将命令中的stable换成相应的字符串即可。
$ # x86_64 / amd64架构 $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" $ # armhf架构 $ sudo add-apt-repository "deb [arch=armhf] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" $ # arm64架构 $ sudo add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" $ # IBM Power (ppc64le) $ sudo add-apt-repository "deb [arch=ppc64el] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" $ # IBM Z (s390x) $ sudo add-apt-repository "deb [arch=s390x] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
注意:从docker17.06开始,稳定版也同样会被推送到体验版和测试版的仓库里
安装docker CE
- 升级apt包索引
$ sudo apt-get update
- 安装最新版本的docker CE
$ sudo apt-get install docker-ce
注意:如果安装了多个docker仓库,使用apt-get install
或者apt-get update
命令时后面不跟版本信息的话,将始终安装最高版本的docker!
- 安装指定版本的docker CE
列出版本,版本号从高到低
$ apt-cache madison docker-ce docker-ce | 18.09.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
安装指定版本的docker CE,需要指定完整的包名称,例如安装仓库中的这个版本18.09.0~ce-0~ubuntu
,其命令为
$ sudo apt-get install docker-ce=18.03.0~ce-0~ubuntu
其他版本同理
docker deamon,即docker守护进程/docker引擎,在安装完成后会自动启动
如果需要升级的话,首先执行sudo apt-get update
,再重复上面的过程即可。
从DEB包安装
DEB包在没有网络的时候就特别管用了,找一台有网络的电脑下载DEB包,这个官方地址列出了所有Debian版本的docker,选择一个进行下载。https://download.docker.com/linux/ubuntu/dists/
在浏览器打开上述地址,导航至pool/stable/
,根据自己的架构amd64, armhf, ppc64el, or s390x
下载.deb
文件
比如我下载的文件叫做(在当前目录)docker-ce_18.06.1_ce_3-0_ubuntu_amd64.deb
执行
$ sudo dpkg -i docker-ce_18.06.1_ce_3-0_ubuntu_amd64.deb
docker deamon,即docker守护进程/docker引擎,在安装完成后会自动启动
卸载
移除docker
$ sudo apt-get purge docker-ce
移除镜像,容器,卷,网络,自定义文件等
$ sudo rm -rf /var/lib/docker
Debian安装docker
Debian是完全免费的,最符合开源精神的Linux发行版,默认不包含任何专有驱动,软件大多数都是稳定版本而不是最新版本,其开发维护完全是由社区驱动。
系统要求
需要64bit的以下任何Debian或Raspbian版本
- Buster 10 (Docker CE 17.11 Edge only)
- Stretch 9 (stable) / Raspbian Stretch
- Jessie 8 (LTS) / Raspbian Jessie
- Wheezy 7.7 (LTS)
卸载旧版本
旧版本的docker叫做docker
或者docker-engine
,如果有安装,先卸载其以及其依赖,新版本的docker叫做docker-ce
。/var/lib/docker/
目录下的镜像文件,容器,卷和网络将会被保留,不会被删除。
$ sudo apt-get remove docker docker-engine docker.io containerd runc
如果是Wheezy 7.7则需要Linux内核版本至少为3.10,查看内核版本,并且需要打开backports
仓库
$ uname -r
安装
有三种安装办法:
- 在软件源内添加docker,并且安装,这样安装和升级比较方便,除了Raspbian外推荐这种方法。
- 下载DEB包手动安装,手动升级,一般在与互联网隔绝的情况下使用此方法。
- 官方一键安装脚本,Raspbian用户只能通过此法安装,上面说过,此处不再赘述。
添加源进行安装
首先安装docker的仓库,你可以从这个仓库中安装或者升级docker。
设置仓库
- 升级apt包索引
$ sudo apt-get update
- 安装能够让apt使用HTTPS的包
$ # Jessie或者更新的版本执行下面命令 $ sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common $ # Wheezy或者更旧的版本执行下面命令 $ sudo apt-get install apt-transport-https ca-certificates curl python-software-properties
- 添加官方的GPG key
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
查看现在是否拥有了指纹9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
的密匙,执行下面搜索命令,如果有类似回显说明拥有此密匙。
$ sudo apt-key fingerprint 0EBFCD88 pub 4096R/0EBFCD88 2017-02-22 Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid Docker Release (CE deb) <[email protected]> sub 4096R/F273FCD8 2017-02-22
- 设置稳定版源
必须安装稳定版源,即使安装体验版或者测试版也需要稳定版源,不同架构的机器需要不同安装命令,lsb_release -cs
命令会返回是哪种Debian发行版,比如jessie
,如果想安装体验版(edge)或者测试版(test),将命令中的stable换成相应的字符串即可。
$ # x86_64 / amd64架构 $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" $ # armhf架构 $ echo "deb [arch=armhf] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list $ # arm64架构 $ echo "deb [arch=arm64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
- 如果发行版是Wheezy:Wheezy上的add-apt-repository版本添加了一个不存在的deb-src库,编辑/etc/apt/sources.list,注释或移除类似下面的语句
deb-src [arch=amd64] https://download.docker.com/linux/debian wheezy stable
注意:从docker17.06开始,稳定版也同样会被推送到体验版和测试版的仓库里
安装docker CE
注意:以下安装过程只支持Debian x86_64 / amd64
,Debian ARM
或 Raspbian
。
- 升级apt包索引
$ sudo apt-get update
- 安装最新版本的docker CE
$ sudo apt-get install docker-ce
注意:如果安装了多个docker仓库,使用apt-get install
或者apt-get update
命令时后面不跟版本信息的话,将始终安装最高版本的docker!
- 安装指定版本的docker CE
列出版本,版本号从高到低
$ apt-cache madison docker-ce docker-ce | 18.09.0~ce-0~debian | https://download.docker.com/linux/debian jessie/stable amd64 Packages
安装指定版本的docker CE,需要指定完整的包名称,例如安装仓库中的这个版本18.03.0.ce-1.el7.centos
,其命令为
$ sudo apt-get install docker-ce-18.03.0.ce
其他版本同理
docker deamon,即docker守护进程/docker引擎,在安装完成后会自动启动
如果需要升级的话,首先执行sudo apt-get update
,再重复上面的过程即可。
从DEB包安装
DEB包在没有网络的时候就特别管用了,找一台有网络的电脑下载DEB包,这个官方地址列出了所有Debian版本的docker,选择一个进行下载。https://download.docker.com/linux/debian/dists/
在浏览器打开上述地址,导航至pool/stable/
,根据自己的架构amd64, armhf, or arm64
下载.deb
文件
比如我下载的文件叫做(在当前目录)docker-ce_17.06.2_ce-0_debian_amd64.deb
执行
$ sudo dpkg -i docker-ce_17.06.2_ce-0_debian_amd64.deb
docker deamon,即docker守护进程/docker引擎,在安装完成后会自动启动
卸载
移除docker
$ sudo apt-get purge docker-ce
移除镜像,容器,卷,网络,自定义文件等
$ sudo rm -rf /var/lib/docker
Fedora安装docker
经常和Ubuntu比较的发行版,和Ubuntu最大的不同可能就是包管理不一样。
系统要求
需要64bit的以下任何Fedora版本
- 26
- 27
- 28
卸载旧版本
旧版本的docker叫做docker
或者docker-engine
,如果有安装,先卸载其以及其依赖,新版本的docker叫做docker-ce
。/var/lib/docker/
目录下的镜像文件,容器,卷和网络将会被保留,不会被删除。
$ sudo dnf remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
安装
有三种安装办法:
- 在软件源内添加docker,并且安装,这样安装和升级比较方便,这是推荐的方法。
- 下载RPM包手动安装,手动升级,一般在与互联网隔绝的情况下使用此方法。
- 官方一键安装脚本,上面说过,此处不再赘述。
添加源进行安装
首先安装docker的仓库,你可以从这个仓库中安装或者升级docker。
设置仓库
- 安装
dnf-plugins-core
,它提供了从命令行管理DNF源的工具。
$ sudo dnf -y install dnf-plugins-core
- 使用下面的命令安装稳定版仓库,即使安装最新体验版或者是测试版也需要稳定版仓库。
$ sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
- 可选:体验版和测试版默认是关闭的,你可以通过下面的命令打开,不打开也不影响稳定版的使用。
$ # 打开体验版与测试版 $ sudo dnf config-manager --set-enabled docker-ce-edge $ sudo dnf config-manager --set-enabled docker-ce-test $ # 关闭体验版与测试版 $ sudo dnf config-manager --set-disabled docker-ce-edge $ sudo dnf config-manager --set-disabled docker-ce-test
注意:从docker17.06开始,稳定版也同样会被推送到体验版和测试版的仓库里
安装docker CE
- 安装最新版本的docker CE
$ sudo dnf install docker-ce
以上命令始终安装docker CE最新版本,如果提示接受GPG key,官方说检查指纹是否是060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
,是的话,就接受,不过我在安装的过程中没有遇见。
注意:如果安装了多个docker仓库,使用dnf install
或者dnf update
命令时后面不跟版本信息的话,将始终安装最高版本的docker!
- 安装指定版本的docker CE
列出版本,版本号从高到低
$ dnf list docker-ce --showduplicates | sort -r docker-ce.x86_64 18.09.0.fc26 docker-ce-stable
安装指定版本的docker CE,需要指定完整的包名称,例如安装仓库中的这个版本18.03.0.ce-1.el7.centos
,其命令为
$ sudo dnf -y install docker-ce-18.03.0.ce
其他版本同理
启动docker CE
启动其实是启动docker deamon,即docker守护进程/docker引擎
$ sudo systemctl start docker
以上即是CentOS从仓库中安装docker CE的全部过程,如果需要升级的话,移除之前的docker,再重复上面的过程即可。
从RPM包安装
RPM包在没有网络的时候就特别管用了,找一台有网络的电脑下载RPM包,这个官方地址列出了所有Fedora版本的docker,选择一个进行下载。https://download.docker.com/linux/fedora/
比如我下载的文件叫做(在当前目录)docker-ce-17.03.0.ce-1.fc24.x86_64.rpm
执行
$ sudo dnf -y install docker-ce-17.03.0.ce-1.fc24.x86_64.rpm
启动守护进程
$ sudo systemctl start docker
卸载
移除docker
$ sudo dnf remove docker-ce
移除镜像,容器,卷,网络,自定义文件等
$ sudo rm -rf /var/lib/docker
Windows10安装docker
win10安装docker一般用于开发人员,用来当服务器使的很少。
安装之前必读
其实在开始在windows上并没有docker,因为docker的是需要Linux内核的支持的,现在的做法是在windows上安装一个Linux虚拟器,docker引擎其实是在Linux虚拟机里面跑着的。
然而现在安装docker的时候会让选择是用Linux容器还是Windows容器,一般情况下还是选择Linux容器,如果你的程序最终会在Linux运行。
windows版docker需要Microsoft Hyper-V的支持,即windows内置的虚拟机引擎,从win10开始支持,docker在安装的时候会自动开启,需要重启电脑。
如果没有Microsoft Hyper-V,请考虑docker toolbox
系统要求
- Windows 10 64bit,专业版、企业版或教育版(1607周年更新版,build 14393或更新)
- BIOS要开启虚拟化,一般会自动开启
- CPU SLAT 支持
- 至少4GB内存
安装
进入此页面下载Docker for Windows Installer.exe
双击Docker for Windows Installer.exe
然后一路下一步,安装完成!
运行
安装完成后docker不会自动运行,搜索docker点击运行。
macOS安装docker
macOS下安装docker我不打算翻译,因为没钱买苹果电脑/捂脸,需要的哥们儿点我。
此文内容翻译自docker docs
更多精彩好文请关注微信公众号或关注博客代码狂魔
come from : https://www.jianshu.com/p/e6b946c79542