手把手教学,带你在Linux、OS X、Windows下Docker的安装

一、前言

  • 目前,Docker已经支持非常多的Linux平台,包括Ubuntu和RHEL(Red Hat Enterprise Linux,Red Hat企业版Linux)。除此之外,Docker还支持Debian、CentOS、Fedora、Oracle Linux等衍生系统和相关的发行版。如果使用虚拟环境,甚至也可以在OS X和Microsoft Windows中运行Docker
  • 本文将介绍如何在4种各有所长的操作系统中安装Docker,包括:
    • 在运行Ubuntu系统的宿主机中安装Docker
    • 在运行RHEL或其衍生的Linux发行版的宿主机中安装Docker
    • 在OS X系统中用Docker Toolbox(http://docker.com/toolbox)工具安装Docker
    • 在Microsoft Windows系统中使用Docker Toolbox工具安装Docker

提示

  • Docker Toolbox一个安装了运行Docker所需一切的组件的集合。它包含VirtualBox和一个极小的虚拟机,同时提供了一个包装脚本(wrapper script)对该虚拟机进行管理。该虚拟机运行一个守护进程,并在OS X或Microsoft Windows中提供一个本地的Docker守护进程。Docker的客户端工具docker作为这些平台的原生程序被安装,并连接到在Docker Toolbox虚拟机中运行的Docker守护进程。Docker Toolbox替代了Boot2Docker
  • Docker也可以在很多其他Linux发行版中运行,包括Debian、SUSE、Arch Linux、CentOS和Gentoo。Docker也支持一些云平台,包括Amazon EC2、Rackspace Cloud和Google Compute Engine。可以在Docker安装指南(https://docs.docker.com/engine/installation/)查到完整的Docker支持平台列表
  • 和所有安装过程一样,推荐读者了解一下如何使用Puppet(http://www.puppetlabs.com/)或Chef(https://www.chef.io/)这样的工具来安装Docker,而不是纯手动安装。例如,可以在网上找到安装Docker的Puppet模块(https://docs.docker.com/use/puppet/)和Chef cookbook(https://supermarket.chef.io/cookbooks/docker

安装Docker的先决条件

  • Docker提供了两个版本:社区版 (CE) 和企业版 (EE)
  • 在Docker的官网也有相应的安装教程,请参阅https://docs.docker.com/,进入之后点击"Guides",然后再选择"Get Docker",之后选择对应的版本,里面会有相应的安装教程

二、在Ubuntu和Debian中安装Docker

  • Docker Engine-Community 支持以下的Ubuntu版本:
    • Xenial 16.04 (LTS)
    • Bionic 18.04 (LTS)
    • Cosmic 18.10
    • Disco 19.04
    • 其他更新的版本……
  • Docker支持以下的Debian版本:
    • Buster 10
    • Stretch 9 (stable) / Raspbian Stretch

检查前提条件(检查内核)

  • 通过下面的命令来查看内核版本,如下所示:此处安装的是4.15.0 x86_64版本的内核,超过了Ubuntu 14.04,因此条件符合
uname -a

  • 如果内核版本低于14.04,可以使用下面的命令来将ubuntu升级到最新的内核。命令如下:
sudo apt-get update

# 安装内核
sudo apt-get install linux-headers-4.15.0-54-generic linux-image-4.15.0-54-generic linux-headers-4.15.0-54

# 更新Grub启动加载器来加载新内核
sudo update-grub

# 重启生效
sudo reboot

检查前提条件(检查Device Mapper)

  • 这里将使用Device Mapper作为存储驱动。自2.6.9版本的Linux内核开始已经集成了Device Mapper,并且提供了一个将块设备映射到高级虚拟设备的方法。Device Mapper支持“自动精简配置”(thin-provisioning)的概念,可以在一种文件系统中存储多台虚拟设备(Docker镜像中的层)。因此,用Device Mapper作为Docker的存储驱动是再合适不过了
  • 任何Ubuntu 12.04或更高版本的宿主机应该都已经安装了Device Mapper,可以通过下面的命令来确认是否已经安装:
ls -l /sys/class/misc/device-mapper

  • 也可以在/proc/devices文件中查看是否有device-mapper条目,如下所示:
sudo grep device-mapper /proc/devices

  • 如果没有出现device-mapper的相关信息,可以尝试加载dm_mod模块,命令如下所示
sudo modprobe dm_mod

其他先决条件

  • cgroup和命名空间自2.6版本开始已经集成在Linux内核中了。2.6.38以后的内核对cgroup和命名空间都提供了良好的支持,基本上也没有什么bug

方法①:手动安装

  • 第一步:Docker的旧版本被称为 docker,docker.io 或 docker-engine。如果已安装,请卸载它们:
sudo apt-get remove docker docker-engine docker.io containerd runc

  • 当前Docker Engine-Community的软件包被称为docker-ce
  • 第二步:在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。首先更新apt包索引
sudo apt-get update

  • 第三步:安装apt依赖包,用于通过HTTPS来获取仓库
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

  • 第四步:添加 Docker 的官方 GPG 密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

  • 第五步:9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88,通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥
sudo apt-key fingerprint 0EBFCD88

  • 第六步:使用以下指令设置稳定版仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

  • 第七步:再次更新 apt 包索引
sudo apt-get update

  • 第八步(与第九步选择其一):安装最新版本的 Docker Engine-Community 和 containerd(备注:如果想要安装特定版本的Docker Engine-Community,请转移到第九步)
sudo apt-get install docker-ce docker-ce-cli containerd.io

  • 第九步(与第八步选择其一):如果想要安装特定版本的Docker Engine-Community,可以先列出仓库中可用的版本,然后再指定版本进行安装
# 列出仓库中可用的docker版本
apt-cache madison docker-ce

# 安装指定版本的命令如下
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

# 例如想要安装5:19.03.8~3-0~ubuntu-bionic,那么就将VERSION_STRING即可
sudo apt-get install docker-ce=5:19.03.8~3-0~ubuntu-bionic docker-ce-cli=5:19.03.8~3-0~ubuntu-bionic containerd.io

  • 第十步:测试是否安装成功
sudo docker version

方法②:使用官方安装脚本自动安装

  • 命令如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  • 或者使用国内daocloud一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh

方法③:使用Shell脚本进行安装

  • Docker 在 get.docker.com 和 test.docker.com 上提供了方便脚本,用于将快速安装 Docker Engine-Community 的边缘版本和测试版本。脚本的源代码在 docker-install 仓库中。 不建议在生产环境中使用这些脚本,在使用它们之前,您应该了解潜在的风险:
    • 脚本需要运行 root 或具有 sudo 特权。因此,在运行脚本之前,应仔细检查和审核脚本
    • 这些脚本尝试检测 Linux 发行版和版本,并为您配置软件包管理系统。此外,脚本不允许您自定义任何安装参数。从 Docker 的角度或您自己组织的准则和标准的角度来看,这可能导致不支持的配置
    • 这些脚本将安装软件包管理器的所有依赖项和建议,而无需进行确认。这可能会安装大量软件包,具体取决于主机的当前配置
    • 该脚本未提供用于指定要安装哪个版本的 Docker 的选项,而是安装了在 edge 通道中发布的最新版本
    • 如果已使用其他机制将 Docker 安装在主机上,请不要使用便捷脚本
  • 本示例使用 get.docker.com 上的脚本在 Linux 上安装最新版本的Docker Engine-Community。要安装最新的测试版本,请改用 test.docker.com。在下面的每个命令,取代每次出现 get 用 test。
curl -fsSL https://get.docker.com -o get-docker.sh

sudo sh get-docker.sh
  • 如果要使用 Docker 作为非 root 用户,则应考虑使用类似以下方式将用户添加到 docker 组:
sudo usermod -aG docker your-user

备注:Docker与UFW

  • 在Ubuntu中,如果使用UFW(https://help.ubuntu.com/community/UFW),即Uncomplicated Firewall,那么还需对其做一点儿改动才能让Docker工作。Docker使用一个网桥来管理容器中的网络默认情况下,UFW会丢弃所有转发的数据包(也称分组)。因此,需要在UFW中启用数据包的转发,这样才能让Docker正常运行
  • 如果UFW没有工作,那么就不需要设置
  • 我们只需要对/etc/default/ufw文件做一些改动即可。默认的值如下:

  • 只需要将DEFAULT_FORWARD_POLICY更改为ACCEPT即可
DEFAULT_FORWARD_POLICY="ACCEPT" 
  • 保存修改内容并重新加载UFW即可
sudo ufw reload 

三、在Red Hat及其发行版中安装Docker

  • 在Red Hat企业版Linux(或者CentOS或Fedora)中,只有少数几个版本可以安装Docker,包括:
    • RHEL(和CentOS)6或以上的版本(64位)
    • Fedora 19或以上的版本(64位)
    • Oracle Linux 6和Oracle Linux 7,带有Unbreakable企业内核发行版 3(3.8.13)或者更高版本(64位)
  • 提示:在Red Hat企业版Linux 7及更高版本中,Docker已经成为系统自带的软件包了,并且,只有Red Hat企业版Linux 7是Red Hat官方支持Docker的发行版本

检查前提条件(检查内核)

  • 通过下面的命令来查看内核版本,如下所示:
uname -a
  • 目前所有官方的Red Hat和Red Hat系列平台,应该都安装了支持Docker的内核

检查前提条件(检查Device Mapper)

  • 我们这里使用Device Mapper作为Docker的存储驱动,为Docker提供存储能力。在Red Hat企业版Linux、CentOS 6或Fedora 19及更高版本宿主机中,应该也都安装了Device Mapper。检查命令如下所示
ls -l /sys/class/misc/device-mapper

  • 同理,也可以在/proc/devices文件中查看是否有device-mapper条目,如下所示:
sudo grep device-mapper /proc/devices
  • 如果没有出现device-mapper的相关信息,可以尝试安装device-mapper软件包,命令如下所示
sudo yum install -y device-mapper
  • 提示: 在新版本的Red Hat系列发行版本中, yum命令已经被dnf命令取代,它们的语法并没有什么变化
  • 安装完成之后,加载dm_mod内核模块,命令如下所示
sudo modprobe dm_mod
  • 模块加载完毕,就应该可以找到/sys/class/misc/device-mapper条目了 
  • 在不同版本的Red Hat中,安装过程略有不同。在RHEL 6或CentOS 6中,需要先添加EPEL软件包的仓库。而Fedora中则不需要启用EPEL仓库。在不同的平台和版本中,软件包命名也有细微的差别

  • 下面演示在CentOS中安装Docker

方式①:手动安装

  • 第一步:卸载旧版本,较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  • 在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker
  • 第二步:安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 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 --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 或者使用清华大学的源地址
sudo yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
  • 第四步(与第五步选择其一):安装最新版本的 Docker Engine-Community 和 containerd(备注:或者跳到第五步安装特定的版本)
sudo yum install docker-ce docker-ce-cli containerd.io
  • 第五步(与第四步选择其一):列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序
# 列出可用版本
yum list docker-ce --showduplicates | sort -r

# 安装特定版本的命令如下
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

# 软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1
sudo yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io
  • 第六步:启动 Docker
sudo systemctl start docker
  • 第七步:通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community
sudo docker run hello-world

方式②:使用官方安装脚本自动安装

  • 安装命令如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  • 也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh

四、在OS X中安装Docker Toolbox

五、在Windows中安装Docker Toolbox

六、二进制安装

  • 如果不想要基于任何软件包的安装方法,可以使用下面的命令来下载最新的Docker可执行程序进行安装
wget https://get.docker.com/builds/Linux/x86_64/docker-latest.tgz
  • 不推荐这种安装方式,因为这降低了Docker软件包的可维护性。使用软件包更简单,也更易于管理,特别是在使用自动化安装和配置管理工具的情况下

七、升级Docker

  • Docker安装之后,也可以很容易地对其进行升级。如果是通过类似apt-get或yum这样的原生软件包安装的Docker,也可以用同样的方法对Docker进行升级
  • 例如,可以运行apt-get update命令,然后安装新版本的Docker。我们使用apt-get install命令来升级Docker,这是因为docker的软件包一般都是固定的

八、Docker用户界面

  • Docker安装之后,也可以用图形用户界面来进行管理
  • 目前,有一些正在开发中的Docker用户界面和Web控制台,它们都处于不同的开发阶段,具体如下
    • Shipyard(http://shipyard-project.com/):Shipyard提供了通过管理界面来管理各种Docker资源(包括容器、镜像、宿主机等)的功能。Shipyard是开源的,源代码可以在https://github.com/ehazlett/shipyard获得
    • DockerUI(https://github.com/crosbymichael/dockerui):DockerUI是一个可以与Docker Remote API交互的Web界面。DockerUI是基于AngularJS框架,采用JavaScript编写的
    • Kitematic:Kitematic是一个OS X和Windows下的GUI界面工具,用于帮助我们在本地运行Docker以及与Docker Hub进行交互。它是由Docker公司免费发布的产品,它也被包含在Docker Toolbox之中

  • 我是小董,V公众点击"笔记白嫖"解锁更多【Docker】资料内容。

相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页