Docker学习之Linux CentOS上安装Docker的完整图文教程

Linux CentOS上安装Docker的完整图文教程

来自Docker官方文档:

支持的平台

Docker Engine可 通过Docker Desktop 在各种Linux平台, macOS和Windows 10上以静态二进制安装的形式使用。

Docker学习之Linux CentOS上安装Docker的完整图文教程_第1张图片

我买了个云服务器,现在想在上面装个Docker,服务器系统是CentOS,所以我选择了CentOS 。

来自Docker官方文档:

要在CentOS上开始使用Docker Engine,请确保您 满足先决条件,然后 安装Docker。

先决条件:

来自Docker官方文档:

前提条件
操作系统要求

要安装Docker Engine,您需要CentOS 7的维护版本。不支持或未测试存档版本。

centos-extras库必须启用。默认情况下,此存储库是启用的,但是如果已禁用它,则需要 重新启用它。

overlay2建议使用存储驱动程序。

卸载旧版本

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

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

如果yum报告未安装这些软件包,则可以。

的内容(/var/lib/docker/包括图像,容器,卷和网络)被保留。现在将Docker Engine软件包称为docker-ce

CentOS需要启用centos-extras存储库,这个存储库是默认启用的:

00002

而我的服务器是新的,所以应该是启用的。

但是为了安心,为了严谨,我还是得看看。

使用命令: yum repolist 可以查看已配置的存储库

[root@VM-0-8-centos yum.repos.d]# yum repolist
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
repo id repo name status
epel/7/x86_64 EPEL for redhat/centos 7 - x86_64 13,426
extras/7/x86_64 Qcloud centos extras - x86_64 413
os/7/x86_64 Qcloud centos os - x86_64 10,070
updates/7/x86_64 Qcloud centos updates - x86_64 1,112
repolist: 25,021

参考:CentOS7 常用repo源配置(软件存储库)

可以看到,centos-extras存储库已启用。

然后是卸载旧版本docker,同样因为是新服务器,所以没有docker,但是还是看看。

执行卸载docker以及相关的依赖项命令:

Docker学习之Linux CentOS上安装Docker的完整图文教程_第2张图片

可以看到,都是NO

现在在CentOS上安装Docker的前置环境要求已经全部满足,接下来就是安装Docker了。

来自Docker官方文档:

安装方法

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

  • 大多数用户会 设置Docker的存储库并从中进行安装,以简化安装和升级任务。这是推荐的方法。
  • 一些用户下载并手动安装 RPM软件包, 并完全手动管理升级。这在诸如在无法访问互联网的空白系统上安装Docker的情况下非常有用。
  • 在测试和开发环境中,一些用户选择使用自动 便利脚本来安装Docker。

我准备选择推荐安装方式 -【设置Docker的存储库并从中进行安装】,简单、省事。

来自Docker官方文档:

使用存储库安装

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

设置存储库

安装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

可选:启用每晚测试存储库。

这些存储库包含在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存储库,则在未在yum installor yum update命令中指定版本的情况下进行安装或更新将始终安装可能的最高版本,这可能不适合您的稳定性需求。

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

  2. 要安装 特定版本 的Docker Engine,请在存储库中列出可用版本,然后选择并安装:

    a. 列出并排序您存储库中可用的版本。本示例按版本号(从高到低)对结果进行排序,并被截断:

    $ 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此示例中的后缀表示)。

    b. 通过其完全合格的软件包名称安装特定版本,该软件包名称是软件包名称(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 Engine已安装并正在运行。您需要使用sudo来运行Docker命令。继续进行Linux后安装,以允许非特权用户运行Docker命令以及其他可选配置步骤。

升级DOCKER引擎

要升级Docker Engine,请按照安装说明,选择要安装的新版本。

我直接安装最新版的Docker Engine:

[root@VM-0-8-centos ~]# sudo yum install docker-ce docker-ce-cli containerd.io
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
	
	......................
	
Total size: 90 M
Total download size: 90 M
Is this ok [y/d/N]: y
Downloading packages:
	
	.....................
	
Total                                                                        291 kB/s |  90 MB  00:05:16     
Retrieving key from https://download.docker.com/linux/centos/gpg
Importing GPG key 0x621E9F35:
 Userid     : "Docker Release (CE rpm) "
 Fingerprint: 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35
 From       : https://download.docker.com/linux/centos/gpg
Is this ok [y/N]: y
Running transaction check
Running transaction test
Transaction test succeeded

Installed:
  containerd.io.x86_64 0:1.2.13-3.2.el7                           docker-ce.x86_64 3:19.03.12-3.el7                           docker-ce-cli.x86_64 1:19.03.12-3.el7                          

Dependency Installed:
  audit-libs-python.x86_64 0:2.8.5-4.el7      checkpolicy.x86_64 0:2.5-8.el7                  container-selinux.noarch 2:2.119.2-1.911c772.el7_8      libcgroup.x86_64 0:0.41-21.el7        
  libsemanage-python.x86_64 0:2.5-14.el7      policycoreutils-python.x86_64 0:2.5-34.el7      python-IPy.noarch 0:0.75-6.el7                          setools-libs.x86_64 0:3.3.8-4.el7     

Dependency Updated:
  policycoreutils.x86_64 0:2.5-34.el7    
  
Complete!

下载需要的时间,不过网速可以的话还好。两次确认,一次确认下载,一次确认安装。总耗时一首半歌的时间吧。

[root@VM-0-8-centos ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.12
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        48a66213fe
 Built:             Mon Jun 22 15:46:54 2020
 OS/Arch:           linux/amd64
 Experimental:      false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

安装完成。

不过没启动,有些命令不能使用:

[root@VM-0-8-centos ~]# docker images
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

运行 sudo systemctl start docker 命令启动Docker引擎:

[root@VM-0-8-centos ~]# sudo systemctl start docker
[root@VM-0-8-centos ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.12
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        48a66213fe
 Built:             Mon Jun 22 15:46:54 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.12
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.10
  Git commit:       48a66213fe
  Built:            Mon Jun 22 15:45:28 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

Docker引擎已启动,可以使用sudo systemctl stop docker命令停止Docker引擎。

现在可以使用各种docker命令了:

[root@VM-0-8-centos ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@VM-0-8-centos ~]# docker images -a
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

目前没有任何容器镜像,运行sudo docker run hello-world安装一个官方测试镜像。

[root@VM-0-8-centos ~]# sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete 
Digest: sha256:7f0a9f93b4aa3022c3a4c147a449bf11e0941a1fd0bf4a8e6c9408b2600777c5
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

hello-world镜像安装完成,并且打印了信息后推出。

再次查看,可以看到已经有一个镜像了:

[root@VM-0-8-centos ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        7 months ago        13.3kB
[root@VM-0-8-centos ~]# docker images -a
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        7 months ago        13.3kB

除了上述的使用存储库安装,Docker官方也提供了rpm软件包安装以及脚本文件安装。

来自Docker官方文档:

从软件包安装

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

  1. 转到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.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。在下面的每个命令,取代每次出现gettest

警告

在本地运行之前,请务必检查从Internet下载的脚本。

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

<output truncated>

如果要使用Docker作为非root用户,则现在应考虑使用类似以下方式将用户添加到“ docker”组:

  sudo usermod -aG docker your-user

请记住注销并重新登录才能生效!

警告

将用户添加到“泊坞窗”组后,他们可以运行容器,这些容器可用于在Docker主机上获得root特权。 有关更多信息,请参考 Docker Daemon Attack Surface。

Docker Engine-社区已安装。它会自动在DEB基于分发的版本上启动。在 RPM基于发行版的系统上,您需要使用相应的systemctlservice命令手动启动它 。如消息所示,默认情况下,非root用户不能运行Docker命令。

注意事项

要安装没有root特权的Docker,请参阅 以非root用户身份运行Docker守护程序(无根模式)。

无根模式目前可作为实验功能。

使用便捷脚本后升级DOCKER

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

除了安装Docker Engine,还有卸载Docker Engine:

来自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
    

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

以上就是我在CentOS上安装Docker的过程,很简单,基本上按照官网教程走一遍就OK了,然后你就可以开始看文档了。

你可能感兴趣的:(Docker学习之Linux CentOS上安装Docker的完整图文教程)