Docker 支持在主流的操作系统平台上使用,包括Ubuntu、Centos、Windows以及MacOS系统等。当然,在Linux系列平台上是原生支持,使用体验也是最好。
官方网站上有各种环境下的 安装指南,这里主要介绍下 Ubuntu、Debian 和CentOS 系列的安装。
Docker 支持以下版本的 Ubuntu 和 Debian 操作系统:
Ubuntu 发行版中,LTS(Long-Term-Support)长期支持版本,会获得 5 年的升级维护支持,这样的版本会更稳定,因此在生产环境中推荐使用 LTS 版本。
Docker 目前支持的 Ubuntu 版本最低为 12.04 LTS,但从稳定性上考虑,推荐使用14.04 LTS 或更高的版本。
Docker 需要安装在 64 位的 x86 平台或 ARM 平台上(如树莓派),并且要求内核版本不低于 3.10。但实际上内核越新越好,过低的内核版本可能会出现部分功能无法使用,或者不稳定。
用户可以通过如下命令检查自己的内核版本详细信息:
$ uname -a
Linux centos 3.10.0-693.21.1.el7.x86_64 #1 SMP Wed Mar 7 19:03:37 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
如果内核版本过低,可以用下面的命令升级系统内核。这块废话有点多,不需要升级内核的直接跳过:)
sudo apt-get install -y --install-recommends linux-generic-lts-trusty
sudo apt-get install -y --install-recommends linux-generic-lts-xenial
更新:
$ yum -y update
启用ELRepo 仓库:
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
仓库启用后,你可以使用下面的命令列出可用的内核相关包:
# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
安装最新内核:
# yum --enablerepo=elrepo-kernel install kernel-ml
--enablerepo
选项开启 CentOS 系统上的指定仓库。默认开启的是 elrepo
,这里用 elrepo-kernel
替换。
最后,重启机器并应用最新内核,接着运行下面的命令检查最新内核版本:
$ uname -sr
为了让新安装的内核成为默认启动选项,你需要如下修改 GRUB 配置:
打开并编辑 /etc/default/grub
并设置 GRUB_DEFAULT=0
。意思是 GRUB 初始化页面的第一个内核将作为默认内核。
GRUB_TIMEOUT=5
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap crashkernel=auto rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
接下来运行下面的命令来重新创建内核配置。
# grub2-mkconfig -o /boot/grub2/grub.cfg
重启并验证最新的内核已作为默认内核。
Debian 7 的内核默认为 3.2,为了满足 Docker 的需求,应该安装 backports 的内核。
执行下面的命令添加 backports 源:
$ echo "deb http://http.debian.net/debian wheezy-backports main" | sudo tee /etc/apt/sources.list.d/backports.list
升级到 backports 内核:
$ sudo apt-get update
$ sudo apt-get -t wheezy-backports install linux-image-amd64
Debian 8 的内核默认为 3.16,满足基本的 Docker 运行条件。但是如果打算使用 overlay2 存储层驱动,或某些功能不够稳定希望升级到较新版本的内核,可以添加 backports 源,升级到新版本的内核。
执行下面的命令添加 backports 源:
$ echo "deb http://http.debian.net/debian jessie-backports main" | sudo tee /etc/apt/sources.list.d/backports.list
升级到 backports 内核:
$ sudo apt-get update
$ sudo apt-get -t jessie-backports install linux-image-amd64
需要注意的是,升级到 backports 的内核之后,会因为 AUFS 内核模块不可用,而使用默认的 devicemapper 驱动,并且配置为 loop-lvm ,这是不推荐的。因此,不要忘记安装 Docker 后,配置 overlay2 存储层驱动。
配置 GRUB 引导参数
在 Docker 使用期间,或者在 docker info 信息中,可能会看到下面的警告信息:
WARNING: Your kernel does not support cgroup swap limit. WARNING:
Your kernel does not support swap limit capabilities. Limitation disc arded.
或者
WARNING: No memory limit support
WARNING: No swap limit support
WARNING: No oom kill disable support
如果需要这些功能,就需要修改 GRUB 的配置文件 /etc/default/grub ,在GRUB_CMDLINE_LINUX 中添加内核引导参数 cgroup_enable=memory
swapaccount=1 。
然后不要忘记了更新 GRUB:
$ sudo update-grub
$ sudo reboot
Ubuntu 14.04 版本官方软件源中已经自带了 Docker 安装包,可以直接安装:
$ sudo apt-get update
$ sudo apt-get install -y docker.io
$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
$ sudo sed -i '$ acomplete -F _docker docker' /etc/bash_completion.d/docker.io
以上流程使用Ubuntu 14.04系统默认自带 docker.io 安装包安装docker ,显然安装的Docker版本相对交旧。
显然,有另一种方式:
$ sudo apt-get install docker-engine
如果系统中存在旧版本的 Docker ( lxc-docker , docker.io ),会提示是否先删除,选择是即可。这种方式适用于 Debian 系统安装Docker。
若果使用较低版本的Ubuntu系统,则需要先进行内核升级并重启系统后再进行安装。
$ sudo apt-get update
$ sudo apt-get install -y linux-image-generic-lts-raring linux-headers-generic-lts-raring
$ sudo reboot
重启后,重复在Ubuntu 14.04系统的安装步骤即可。就是上述的另一种方式。
Docker 支持CentOS 6 及以后的版本。
对于CentOS 6 系统使用 EPEL 库安装Docker ,命令如下:
首先关闭selinux:
# setenforce 0
# sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
在Fedora EPEL源中已经提供了docker-io包,下载安装epel :
$ sudo rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
$ sudo sed -i 's/^mirrorlist=https/mirrorlist=http/' /etc/yum.repos.d/epel.repo
yum安装docker-io:
$ sudo yum -y install docker-io
对于 CentOS 7 系统,由于 CentOS-Extras 源中已内置Docker,我们可以直接使用 yum 命令进行安装:
$ sudo yum install -y docker
目前在 CentOS 系统中更新Docker 软件有两种方法,一是自行通过源码编译安装,二是下载二进制文件进行更新。
Docker 官方为了简化安装流程,提供了一套安装脚本,Ubuntu 和 Debian 系统可以使用这套脚本安装:
$ sudo curl -sSL https://get.docker.com/ | sh
国内使用的话,可能被墙,连接超时...,在国内可以使用修改的脚本:
阿里云的安装脚本
$ sudo curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
DaoCloud 的安装脚本
$ sudo curl -sSL https://get.daocloud.io/docker | sh
这部分以后有时间再弄吧。。。也是找文档来部署。
后文中使用 $ 作为终端引导符时,表示非 root 权限用户;# 表示是 root 用户。
另外,Windows 和MacOS系统的Docker 安装不更了。。。因为本人主要是在CentOS 7 上进行docker 操作的。
Ubuntu 12.04/14.04、Debian 7 Wheezy、CentOS 6
$ sudo service docker start
Ubuntu 16.04、Debian 8 Jessie/Stretch、CnetOS 7
$ sudo systemctl enable docker
$ sudo systemctl start docker
默认情况下, docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。
建立 docker 组:
$ sudo groupadd docker
将当前用户加入 docker 组:
$ sudo usermod -aG docker $USER
Docker 官方 Ubuntu 安装文档
Docker 官方 Debian 安装文档
Docker 官方 CentOS 安装文档