手把手教学,带你在LinuxOS XWindows下Docker的安装

Posted 董哥的黑板报

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手把手教学,带你在LinuxOS XWindows下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】资料内容。

以上是关于手把手教学,带你在LinuxOS XWindows下Docker的安装的主要内容,如果未能解决你的问题,请参考以下文章

一篇文搞懂webpack[零基础教学+手把手带你搞项目]

手把手教你在windows上安装mysql8.0最新版本数据库,保姆级教学

『Python开发实战菜鸟教程』实战篇:一文带你了解人脸识别应用原理及手把手教学实现自己的人脸识别项目

『Python开发实战菜鸟教程』实战篇:一文带你了解人脸识别应用原理及手把手教学实现自己的人脸识别项目

『Python开发实战菜鸟教程』实战篇:一文带你了解人脸识别应用原理及手把手教学实现自己的人脸识别项目

『Python开发实战菜鸟教程』实战篇:一文带你了解人脸识别应用原理及手把手教学实现自己的人脸识别项目