在CentOS上安装Docker Engine

2,150 阅读1分钟

一、前提条件

1、操作系统要求

  • CentOS 7或更高版本
  • centos-extras 仓库必须处于启用状态,该仓库默认启用,但如果您禁用了该仓库,请按照wiki.centos.org/AdditionalR… 中的描述重新启用。
  • overlay2建议使用存储驱动程序。

2、卸载旧版本

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

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

需要注意的是,执行该命令只会卸载Docker本身,而不会删除Docker存储的文件,例如镜像、容器、卷以及网络文件等。这些文件保存在/var/lib/docker 目录中,需要手动删除。

二、开始安装

有三种安装方式,可以根据需要以不同的方式安装Docker Engine:

  • 设置Docker的仓库并从仓库中下载进行安装。这是官方推荐的方法。
  • 可以下载并手动安装 RPM软件包, 并完全手动管理升级。这在诸如在无法访问互联网的空白系统上安装Docker的情况下非常有用。
  • 在测试和开发环境中,一些用户选择使用自动 便利脚本来安装Docker。脚本地址:https://docs.docker.com/engine/install/centos/#install-using-the-convenience-script

1、使用仓库安装

安装仓库

安装yum-utils软件包(提供yum-config-manager 实用程序)并设置稳定的仓库。

$ sudo yum install -y yum-utils

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

[可选] 启用nightly或者test仓库

执行如下命令,启用nightlytest 仓库。nightly/test仓库其实也包含在了docker.repo 文件中,但默认是禁用的,可使用以下命令来启用。

sudo yum-config-manager --enable docker-ce-nightly   # 启用nightly仓库
 sudo yum-config-manager --enable docker-ce-test   # 启用test仓库

如需再次禁用,可加上--disable 标签。例如,执行如下命令即可禁用nightly仓库。

$ sudo yum-config-manager --disable docker-ce-nightly

安装Docker Engine

  • 执行如下命令即可安装最新版本的Docker Engine和容器,安装完成后,会自动创建一个docker组,但是没有用户

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

    安装过程中的问题:

    Error: Package: containerd.io-1.2.13-3.2.el7.x86_64 (docker-ce-stable)
               Requires: container-selinux >= 2:2.74
    Error: Package: 3:docker-ce-19.03.8-3.el7.x86_64 (docker-ce-stable)
               Requires: container-selinux >= 2:2.74
    

    解决办法:

    • 下载container-selinux:

      wget http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.107-3.el7.noarch.rpm
      
    • 安装container-selinux(使用–nodeps --force跳过依赖检查):

      rpm -ivh container-selinux-2.107-3.el7.noarch.rpm --nodeps --force
      
    • 完成之后即可重新执行安装docker-ce的命令

  • 在生产环境中,可能需要指定想要安装的版本,此时可使用如下命令列出当前可用的Docker版本

    $ 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
    

    使用如下命令安装想要的版本:

    # 版本示例:docker-ce-18.09.1
    $ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
    
  • 启动Docker

    sudo systemctl start docker
    
  • 通过运行hello-world镜像来验证是否正确安装了Docker Engine

    $ sudo docker run hello-world
    

    这样,Docker将会下载测试镜像,并使用该镜像启动一个容器。

    至此,Docker Engine已经安装并运行成功,但是需要使用sudo 来运行Docker命令。后续会在单独写一下如何配置不需要使用sudo命令来操作docker,当然官网上都是有的,也可以自行查阅哈

2、使用软件包安装

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

  • 下载软件包

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

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

    $ sudo yum install /path/to/package.rpm
    
  • 启动Docker

    sudo systemctl start docker
    
  • 通过运行hello-world镜像来验证是否正确安装了Docker Engine

    $ sudo docker run hello-world
    

3、使用便捷脚本安装

Docker在get.docker.comtest.docker.com上提供了方便脚本,用于将Docker Engine-Community的edge版本和test版本快速且非交互地安装到开发环境中。脚本的源代码在 docker-install仓库中不建议在生产环境中使用这些脚本

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

一切就OK了。

三、参考文档

  • https://docs.docker.com/engine/install/centos/
  • https://github.com/docker/docker-install

有任何问题欢迎关注公众号【Hugh的白板】私信我,一起探讨,一起学习