如何在 CentOS 7 / RHEL 7 上安装 Docker

Docker是一种近来广为流行的容器虚拟化技术;它提供了一种更有效的方式来部署应用程序。使用Docker,应用程序驻留在 Linux 操作系统之上的容器内。

Docker使用 cgroups 和 namespace 等内核特性来允许独立容器在单个 os 实例上运行。

在这篇文章中,您将学习如何在CentOS 7 / RHEL 7上安装 Docker 。

安装 Docker

选择任何一种方法在CentOS 7上安装 Docker 。

从 Docker 安装(官方)

Docker 现在有两个版本,

  • 社区版 (CE)
  • 企业版 (EE)

在这里,我们将安装 Docker 社区版 (CE)。

卸载旧版本的 Docker,名为dockerdocker-engine以及相关的依赖项。

yum  -y remove  docker-common docker container-selinux docker-selinux docker-engine

不要担心/var/lib/docker/里面的内容,所有内容都会被保留。

然后,安装所需的软件包。
yum -y install lvm2 device-mapper device-mapper-persistent-data device-mapper-event device-mapper-libs device-mapper-event-libs

Docker 社区包现在称为 docker -ce。让我们为 docker 安装添加 CE 存储库。

yum -y install  wget
wget https://download.docker.com/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

使用以下命令安装最新版本的 Docker CE。

yum -y install docker-ce
有时您可能想要安装特定版本的 Docker,您可以通过附加类似docker-ce- [version] 的版本来实现,
例如:yum install docker-ce-19.03.0-3.el7
您可以列出yum可用的 Docker 版本列出 docker-ce –showduplicates | 排序 -r

从基础存储库安装 Docker

Docker 在 CentOS 的标准存储库中可用,因此我们不必搜索包。

对于 RHEL 7,您必须拥有有效的 Redhat 订阅才能在服务器上启用 Extras rpm 的存储库。使用以下命令安装它。

yum -y install docker

现在你已经在你的机器上安装了 Docker,启动 Docker 服务,以防安装后它没有自动启动

systemctl start docker
systemctl enable docker

验证 Docker 安装

服务启动后,通过运行以下命令验证您的安装。

docker run -it centos echo Hello-World

让我们看看当我们运行docker run命令时会发生什么。由于我们是第一次运行这个 centos 容器,Docker 会启动一个带有 centos 基础镜像的容器,输出将如下所示。

Unable to find image 'centos:latest' locally
latest: Pulling from library/centos
8ba884070f61: Pull complete
Digest: sha256:a799dd8a2ded4a83484bbae769d97655392b3f86533ceb7dd96bbac929809f3c
Status: Downloaded newer image for centos:latest
Hello-World

Docker在本地寻找centos镜像,没有找到,就开始从Docker注册中心下载centos镜像。下载图像后,它将启动容器并在控制台中回显命令Hello-World,您可以在输出的末尾看到该命令。

允许非root访问

正如您在我的命令中看到的,对于 CentOS,我必须以 root 用户身份运行 Docker。为避免这种情况,您可以按照以下步骤允许非 root 用户运行 Docker 容器。

如果不存在,则创建一个名为docker的组,以root权限运行以下命令。

groupadd docker

添加将成为 docker 组成员的用户。用您自己的用户名替换raj

useradd raj

将用户添加到 docker 组。

usermod -aG docker raj

现在您可以使用非 root 用户运行 Docker。

防火墙

CentOS 7 中的防火墙可以与 Docker 冲突;建议关闭该服务。

systemctl stop firewalld
systemctl disable firewalld

当 firewalld 启动或重新启动时,它会从 iptables 中删除 DOCKER 链,从而阻止 Docker 正常工作。

如果你还想使用systemd,则必须在Docker服务之前启动firewalld。如果您在 Docker 之后启动或重新启动 firewalld,则必须重新启动 Docker 守护进程。

Guess you like

Origin blog.csdn.net/allway2/article/details/121497119