CentOS上安装Docker Engine

先决条件

操作系统要求

  • 要安装Docker Engine,您需要一个CentOS 7或8的维护版本。不支持或未测试存档版本。
  • centos-extras库必须启用。默认情况下,此存储库是启用的,但是如果已禁用它,则需要重新启用它。
  • overlay2建议使用存储驱动程序。
  • 具体参考连接或如下笔记连接笔记

    卸载旧版本

    较旧的Docker版本称为docker或docker-engine。如果已安装这些程序,请卸载它们以及相关的依赖项。

    1. $ sudo yum remove docker \
    2. docker-client \
    3. docker-client-latest \
    4. docker-common \
    5. docker-latest \
    6. docker-latest-logrotate \
    7. docker-logrotate \
    8. docker-engine

    **/var/lib/docker/**中包括了图像,容器,卷和网络

    安装方法

    您可以根据需要以不同的方式安装Docker Engine:

  • 大多数用户会 设置Docker的存储库并从中进行安装,以简化安装和升级任务。这是推荐的方法。

  • 一些用户下载RPM软件包并 手动安装它,并完全手动管理升级。这在诸如在无法访问互联网的空白系统上安装Docker的情况下很有用。
  • 在测试和开发环境中,一些用户选择使用自动 便利脚本来安装Docker。

    使用存储库安装

    在新主机上首次安装Docker Engine之前,需要设置Docker存储库。之后,您可以从存储库安装和更新Docker。

    设置存储库

    安装yum-utils软件包(提供yum-config-manager 实用程序)并设置稳定的存储库。
    yum-config-manager命令的本质是对/etc/yum.repos.d/(库数据的储存位置)文件夹下文件的增删查改,推荐使用yum-config-manager命令进行改动
    $ sudo yum install -y yum-utils
    $ 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.repo上面的文件中,但默认情况下处于禁用状态。您可以在稳定存储库旁边启用它们。以下命令启用每晚存储库。
    $ sudo yum-config-manager --enable docker-ce-nightly
    
    要启用测试通道,请运行以下命令:
    $ sudo yum-config-manager --enable docker-ce-test
    
    您可以通过运行带有标志的命令来禁用每晚测试存储库 。要重新启用它,请使用该标志。以下命令禁用夜间存储库。yum-config-manager``--disable``--enable
    $ sudo yum-config-manager --disable docker-ce-nightly
    

    安装Docker引擎

  1. 安装最新版本的Docker Engine和容器,或转到下一步以安装特定版本:

    $ sudo yum install docker-ce docker-ce-cli containerd.io
    

    如果提示您接受GPG密钥,请验证指纹是否匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35,如果是,则接受它。
    Docker已安装但尚未启动。docker创建该组,但没有用户添加到该组。

    关于docker-ce 、docker-ce-cli、containerd.io解释:

    • containerd.io-与OS API进行交互的守护程序(在本例中为LXC-Linux容器),从本质上将Docker与OS分离,还为非Docker容器管理器提供容器服务。(容器仓库,将Docker与操作系统隔离)
    • docker-ce-Docker守护程序,这是完成所有管理工作的部分,在Linux上需要另外两个
    • docker-ce-cli-用于控制守护程序的CLI工具,如果要控制远程Docker守护程序,则可以单独安装它们

    2.要安装特定版本的Docker Engine,请在存储库中列出可用版本,然后选择并安装:
    一种。列出并排序您存储库中可用的版本。本示例按版本号(从高到低)对结果进行排序,并被截断:

    $ yum list docker-ce --showduplicates | sort -r
    docker-ce.x86_64  3:18.09.1-3.el7                     docker-ce-stable
    docker-ce.x86_64  3:18.09.0-3.el7                     docker-ce-stable
    docker-ce.x86_64  18.06.1.ce-3.el7                    docker-ce-stable
    docker-ce.x86_64  18.06.0.ce-3.el7                    docker-ce-stable
    

    返回的列表取决于启用的存储库,并且特定于您的CentOS版本(.el7在本示例中以后缀表示)。
    通过其完全合格的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)到第一个连字符,以连字符(-)分隔。例如,docker-ce-18.09.1

    $ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
    

    Docker已安装但尚未启动。docker创建该组,但没有用户添加到该组。
    3.启动Docker。

    $ sudo systemctl start docker
    

    4.通过运行hello-world 映像来验证是否正确安装了Docker Engine 。

    $ sudo docker run hello-world
    

    此命令下载测试图像并在容器中运行它。容器运行时,它会打印参考消息并退出。

    从软件包安装

    如果您不能使用Docker的存储库来安装Docker,则可以下载该.rpm发行版的 文件并手动安装。每次要升级Docker Engine时,都需要下载一个新文件。

  2. 转到https://download.docker.com/linux/centos/ 并选择您的CentOS版本。然后浏览x86_64/stable/Packages/ 并下载.rpm要安装的Docker版本的文件。

    注意:要安装夜间测试(预发布)软件包,stable请将上述URL中的单词更改为nightlytest

    2.安装Docker Engine,将下面的路径更改为您下载Docker软件包的路径。

    $ sudo yum install /path/to/package.rpm
    

    Docker已安装但尚未启动。docker创建该组,但没有用户添加到该组。
    3.启动Docker。

    $ sudo systemctl start docker
    

    4.通过运行hello-world 映像来验证是否正确安装了Docker Engine 。

    $ sudo docker run hello-world
    

    此命令下载测试图像并在容器中运行它。容器运行时,它会打印参考消息并退出。
    Docker Engine已安装并正在运行。您需要使用sudo来运行Docker命令。继续Linux的安装后步骤(详情见下文)以允许非特权用户运行Docker命令以及其他可选配置步骤。

    升级Docker引擎

    要升级Docker Engine,请下载更新的软件包文件,并使用 代替重复 安装过程,并指向新文件。yum -y upgrade``yum -y install

    使用便捷脚本安装

    Docker在get.docker.comtest.docker.com上提供了便利脚本,用于将Docker Engine-Community的边缘版本和测试版本快速且非交互地安装到开发环境中。脚本的源代码在 docker-install存储库中不建议在生产环境中使用这些脚本,并且在使用它们之前,应该了解潜在的风险:

  • 脚本需要运行root或具有sudo特权。因此,在运行脚本之前,应仔细检查和审核脚本。
  • 这些脚本尝试检测Linux发行版和版本,并为您配置软件包管理系统。此外,脚本不允许您自定义任何安装参数。从Docker的角度或您自己组织的准则和标准的角度来看,这可能导致不支持的配置。
  • 这些脚本将安装软件包管理器的所有依赖项和建议,而无需进行确认。根据主机的当前配置,这可能会安装大量软件包。
  • 该脚本未提供用于指定要安装哪个版本的Docker的选项,而是安装了在“ edge”通道中发布的最新版本。
  • 如果已经使用其他机制在主机上安装了Docker,请不要使用便捷脚本。

本示例使用get.docker.com上的脚本在Linux上安装最新版本的Docker Engine-Community。要安装最新的测试版本,请改用test.docker.com。在下面的每个命令,取代每次出现gettest
image.png

 curl -fsSL https://get.docker.com -o get-docker.sh
 sudo sh get-docker.sh

如果您想以非root用户身份使用Docker,请参阅 Linux的安装后步骤。
Docker Engine-社区已安装。它会自动在DEB基于发行版的系统上启动。在 RPM基于发行版的系统上,您需要使用相应的systemctlservice命令手动启动它 。如消息所示,默认情况下,非root用户不能运行Docker命令。

使用便捷脚本后升级Docker

如果使用便捷脚本安装了Docker,则应直接使用包管理器升级Docker。重新运行便利程序脚本没有任何好处,如果尝试重新添加已经添加到主机的存储库,则可能导致问题。

卸载Docker Engine

  1. 卸载Docker Engine,CLI和Containerd软件包:

    $ sudo yum remove docker-ce docker-ce-cli containerd.io
    
  2. 主机上的映像,容器,卷或自定义配置文件不会自动删除。要删除所有图像,容器和卷:

    $ sudo rm -rf /var/lib/docker
    $ sudo rm -rf /var/lib/containerd
    

    您必须手动删除所有已编辑的配置文件。

    从二进制文件安装Docker Engine

    在 Linux 上安装守护进程和客户端二进制文件

    先决条件

    在尝试从二进制文件安装 Docker 之前,请确保您的主机满足先决条件:

  • 64 位安装
  • 3.10 或更高版本的 Linux 内核。建议使用适用于您的平台的最新内核版本。
  • iptables 1.4 或更高版本
  • git 1.7 或更高版本
  • 一个ps可执行文件,通常由procps或类似的包提供。
  • XZ Utils 4.9 或更高版本
  • 正确安装 cgroupfs的层次结构; 一个包罗万象的cgroup挂载点是不够的。请参阅 Github 问题 #2683#3485#4568)。

    尽可能保护你的环境

    操作系统注意事项
    如果可能,启用 SELinux 或 AppArmor。
    如果您的 Linux 发行版支持两者之一,则建议使用 AppArmor 或 SELinux。这有助于提高安全性并阻止某些类型的漏洞利用。查看 Linux 发行版的文档,了解有关启用和配置 AppArmor 或 SELinux 的说明。

    安全警告 如果启用了任一安全机制,请不要将其禁用作为使 Docker 或其容器运行的变通方法。相反,正确配置它以解决任何问题。

Docker 守护进程注意事项
  • seccomp如果可能,启用安全配置文件。
  • 如果可能,启用用户命名空间。

    安装静态二进制文件

  1. 下载静态二进制存档。前往 https://download.docker.com/linux/static/stable/ (或更改stablenightlytest),选择您的硬件平台,然后下载.tgz与您要安装的 Docker Engine 版本相关的文件。
  2. 使用该tar实用程序提取存档。在dockerddocker 二进制文件被提取。

    $ tar xzvf /path/to/<FILE>.tar.gz
    
  3. 可选:将二进制文件移动到可执行路径上的目录,例如/usr/bin/. 如果跳过此步骤,则必须在调用dockerdockerd命令时提供可执行文件的路径。

    $ sudo cp docker/* /usr/bin/
    
  4. 启动 Docker 守护进程:

    $ sudo dockerd &
    
  5. 如果您需要使用其他选项启动守护程序,请相应地修改上述命令或创建并编辑文件/etc/docker/daemon.json 以添加自定义配置选项。

  6. 通过运行hello-world 映像验证 Docker 是否已正确安装。

    $ sudo docker run hello-world
    
  7. 此命令下载测试映像并在容器中运行它。当容器运行时,它会打印一条信息性消息并退出。

    在 macOS 上安装客户端二进制文件

    macOS 二进制文件仅包含 Docker 客户端。它不包括 dockerd守护进程。

  8. 下载静态二进制存档。前往 https://download.docker.com/mac/static/stable/x86_64/,(或stable改为nightlytest),下载.tgz与您要安装的 Docker Engine 版本相关的文件。

  9. 使用该tar实用程序提取存档。该docker二进制被提取。

    $ tar xzvf /path/to/<FILE>.tar.gz
    
  10. 清除扩展属性以允许它运行。
    如果执行,docker/docker您会收到错误消息:“docker”已 损坏且无法打开。你应该把它移到垃圾箱里。
    Apple 非常重视我们的安全。因此,我们需要删除阻止我们运行可执行文件的安全机制。

    $ sudo xattr -rc docker
    
  11. 现在,当您运行以下命令时,您可以看到 Docker CLI 使用说明:

    $ docker/docker
    
  12. 可选:将二进制文件移动到可执行路径上的目录,例如/usr/local/bin/. 如果跳过此步骤,则必须在调用dockerdockerd命令时提供可执行文件的路径。

    $ sudo cp docker/docker /usr/local/bin/
    
  13. 通过运行hello-world 映像验证 Docker 是否已正确安装。的值<hostname>是运行 Docker 守护程序并可被客户端访问的主机名或 IP 地址。

    $ sudo docker -H <hostname> run hello-world
    
  14. 此命令下载测试映像并在容器中运行它。当容器运行时,它会打印一条信息性消息并退出。

    升级静态二进制文件

    要升级手动安装的 Docker Engine,首先停止 本地运行的任何 dockerddockerd.exe进程,然后按照常规安装步骤在现有版本之上安装新版本。

镜像加速器

国内访问 Docker Hub 有时会遇到困难,此时可以配置镜像加速器。
国内很多云服 务商都提供了加速器服务,例如: 阿里云加速器 DaoCloud 加速器 灵雀云加速器 注册用户并且申请加速器,会获得如 https://jxus37ad.mirror.aliyuncs.com这样的地址。我们需要将其配置给 Docker 引擎。

CentOS 7

对于使用 systemd 的系统,用systemctl enable docker 启用服务后,编辑/etc/systemd/system/multi-user.target.wants/docker.service 文件,找到 ExecStart= 这一行,在这行最后添加加速器地址 —registry-mirror=<加 速器地址> ,如:

ExecStart=/usr/bin/dockerd --registry-mirror=https://jxus37ad.mirror.aliyuncs.com

注:对于 1.12 以前的版本, dockerd 换成 docker daemon
重新加载配置并且重新启动。

$ sudo systemctl daemon-reload 
$ sudo systemctl restart docker

Windows 10

对于使用 WINDOWS 10 的系统,在系统右下角托盘图标内右键菜单选择Settings ,打开配置窗口后左侧导航菜单选择 Docker Daemon 。编辑窗口内 的JSON串,填写如阿里云、DaoCloud之类的加速器地址,如:

{
    "registry-mirrors": [
        "https://sr5arhkn.mirror.aliyuncs.com",
        "http://14d216f4.m.daocloud.io"
    ],
    "insecure-registries": []
}

编辑完成,点击Apply保存后Docker服务会重新启动。
检查加速器是否生效 Linux系统下配置完加速器需要检查是否生效,在命令行执行 ps -ef | grep dockerd,如果从结果中看到了配置的 --registry-mirror 参数说明配置成功。

$ sudo ps -ef | grep dockerd
    root 5346 1 0 19:03 ? 00:00:00 /usr/bin/dockerd
    --registry-mirror=https://jxus37ad.mirror.aliyuncs.com