如何安装和使用容器化

什么是容器化?

容器化是针对硬件级虚拟化的诸多问题而开发的一种虚拟化操作系统形式。 因为后者运行一个成熟的客户操作系统,它非常占用资源并产生大量开销,但容器化要轻得多。 由于容器共享主机的内核,资源不会浪费在运行单独的操作系统任务上。 这允许更快、更轻量地部署应用程序。

容器化是如何工作的?

容器将应用程序及其所有依赖项封装在其自己的环境中,使其能够在使用相同操作系统和资源的同时独立运行。 但是,每个容器都与其自己的私有文件系统交互,该文件系统由容器映像提供。 映像包含运行应用程序所需的一切,例如代码、运行时、依赖项以及可能需要的任何其他文件系统对象。

除了轻量级之外,容器化的流行还在于许多其他方面,例如它的灵活性,因为所有应用程序都是容器化的。 它也是可移植的,因此应用程序可以在本地构建并部署到云中,从而允许它们在任何地方运行。 容器镜像可以通过多种方式共享,互联网上有几个应用程序共享中心。 此外,如前所述,容器提供安全性,因为它们默认对进程应用积极的约束和隔离,无需用户进行任何配置。 最后,容器是自给自足和封装的,这意味着它们可以在不干扰其他容器的情况下进行更换或升级。

什么是码头工人?

由于容器的流行和广泛接受的使用,对容器技术标准的需求出现了。 因此,Docker 和其他行业领导者于 2015 年 6 月成立了 Open Container Initiative (OCI),以促进容器技术的最小化和开放标准。 虽然 Docker 是最流行的容器引擎技术之一,但还有其他替代方案,例如 CoreOS rkt、 Apache Mesos Containerizer、LXC Linux Containers、OpenVZ 和 crio-d。

但是,在本教程中,我们将重点介绍 Docker,因为它是一种众所周知且使用率很高的容器化工具。 它是一个开源项目,开发人员和系统管理员使用它来自动化容器内应用程序的部署。 在我们研究安装过程之前,我们需要了解在此上下文中使用的一些术语。

Docker 引擎

客户端和服务器可以在同一台服务器上,也可以在两个或更多独立的服务器上。 它们之间的通信需要通过 REST API、UNIX 套接字或网络接口进行。

Docker 引擎是一个开源的客户端-服务器应用程序,它由一个具有服务器功能的守护进程、一个基于 REST 的编程接口和一个命令行用户界面组成。 命令行界面中使用的一些命令是 Docker 构建、拉取和运行命令。

码头引擎

Docker 镜像

要运行任何应用程序,它需要其他文件、依赖项和系统库,而不仅仅是主应用程序代码。 docker 映像是一个多级文件,其中包含应用程序可执行所需的所有内容。 然后可以在其他任何地方共享、使用和部署这些映像。

码头工人中心

为了共享这些镜像,社区创建了一个名为 Docker Hub 的基于云的镜像存储库。 我们可以从那里提取图像并在我们的服务器上下载和使用它们。

安装 Docker

安装 Docker 相当简单,但在此之前我们需要经过几个步骤。 首先,我们必须检查 CentOS-Extras 存储库是否启用,默认情况下应该启用,但如果它被禁用,则需要重新启用。 我们可以使用以下命令检查其状态:

[[email protected] ~]# grep -m1 enabled /etc/yum.repos.d/CentOS-Extras.repo  enabled=1

由于我们看到数字 1,这意味着它已启用; 如果那里有数字 0,那么它将被禁用,我们需要使用 nano 或 vim 编辑文件以将其更改为数字 1。

码头工人形象

接下来,我们需要卸载旧版本的 Docker,以防它们被安装。 旧版本的 Docker 称为 docker 或 docker-engine,我们可以使用以下命令删除它们及其依赖项:

[[email protected] ~]# yum remove docker     docker-client     docker-client-latest     docker-common     docker-latest     docker-latest-logrotate     docker-logrotate     docker-engine

如果我们收到消息称这些软件包均未首先安装或现在已卸载,则我们可以继续安装。

安装方法

Docker Engine 可以通过几种不同的方法安装,但我们将重点介绍第一种。 推荐的方法是设置 Docker 的存储库并安装它们。 这使得安装和升级变得容易。

如果在无法访问 Internet 的系统上安装 Docker,我们可以下载 RPM 包并手动安装。 但是,升级必须完全由人工管理。

也可以使用自动化脚本进行安装,这在测试和开发环境中很有用。

由于我们将使用第一个选项安装 Docker,因此我们需要在继续安装之前设置存储库。

设置存储库

首先,我们将安装 yum-utils 包,以防它尚未安装。 它提供了我们需要的 yum-config-manager 实用程序,以设置稳定的存储库。 我们可以使用以下命令执行此操作:

[[email protected] ~]# yum install -y yum-utils [[email protected] ~]# yum-config-manager  > --add-repo  > https://download.docker.com/linux/centos/docker-ce.repo Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo

也可以使用 yum-config-manager 使用 –enable 和 –disable 标志启用或禁用夜间或测试存储库。 尽管它们包含在 docker-ce.repo 文件中,但默认情况下它们都是禁用的。

可以使用以下命令启用和禁用夜间存储库:

[[email protected] ~]# yum-config-manager --enable docker-ce-nightly [[email protected] ~]# yum-config-manager --disable docker-ce-nightly

同样,可以使用以下命令启用或禁用测试通道:

[[email protected] ~]# yum-config-manager --enable docker-ce-test [[email protected] ~]# yum-config-manager --disable docker-ce-test

安装 Docker 引擎

Docker Engine 包现在称为 docker-ce,因此我们可以使用以下命令安装其最新版本以及 containerd:

[[email protected] ~]# yum install docker-ce docker-ce-cli containerd.io

安装特定的 Docker 版本

如果我们想安装特定版本的 Docker Engine,我们可以通过指定其完全限定的包名来实现。 如果我们不知道我们有哪些可用版本,我们可以使用以下命令列出它们:

[[email protected] ~]# yum list docker-ce --showduplicates | sort -r docker-ce.x86_64 3:19.03.8-3.el7 docker-ce-stable docker-ce.x86_64 3:19.03.7-3.el7 docker-ce-stable docker-ce.x86_64 18.06.3.ce-3.el7 docker-ce-stable docker-ce.x86_64 18.06.2.ce-3.el7 docker-ce-stable

我们得到的列表取决于启用了哪些存储库以及我们系统正在运行的 CentOS 版本。 获得列表后,我们可以通过指定包 docker-ce 来安装特定版本,然后在第二列中添加一个连字符和版本字符串,从第一个冒号开始,直到第一个连字符。 例如,完全限定的包名称将是 docker-ce-19.03.8-3。 在这种情况下,我们将使用以下命令安装指定版本的 Docker Engine 和 containerd:

[[email protected] ~]# yum install docker-ce- docker-ce-cli- containerd.io

启动 Docker

安装 Docker 引擎后,我们现在必须启动它。 之后,我们还需要将用户添加到自动创建的 docker 组中。

Docker 可以使用 systemctl 命令启动:

[[email protected] ~]# systemctl start docker

现在 Docker 正在运行,我们可以通过以用户身份运行测试 hello-world 映像来检查它是否全部正确完成,但我们需要运行它们 sudo:

$ sudo docker run hello-world

docker run 命令下载指定的测试镜像并在容器中运行它。 它应该打印一条消息,表明 Docker 已正确安装,并为您提供有关使用它的更多信息。

安装后设置

docker 组应该已经存在,所以我们现在要做的是将我们的用户添加到它,以便在不运行 docker 命令的情况下运行 sudo:

[[email protected] ~]# usermod -aG docker $USER

验证我们是否可以在没有的情况下运行命令 sudo,我们可以尝试以用户身份运行它:

$ docker run hello-world

如果一切都正确完成,这应该再次显示之前的消息。

使用 Docker

我们可以使用可以从 Docker Hub 获取的 Docker 镜像,为了获取它们,我们需要先拉取它们。 如果我们不知道我们想要的图像的确切名称,我们可以使用以下命令搜索它:

docker search image_name

一旦我们找到了我们想要的,我们就可以使用 pull 命令下载它:

docker pull image_name

我们可以使用 images 命令来检查我们下载了哪些图像:

docker images

例如,我们可以看到我们已经下载了 hello-world 镜像,我们可以将其与 docker run 命令一起使用,如前所述。

[[email protected] ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest bf756fb1ae65 4 months ago 13.3kB

结论

容器化是确保跨平台兼容性和维护多个应用程序的安全性和稳定性的最佳方法之一。

您想更多地了解如何将这项技术应用到您现有的基础设施中吗? 今天给我们打电话 800.580.4985,或者打开一个 聊天 或与我们联系,与我们知识渊博的解决方案或经验丰富的托管顾问之一交谈,以了解如何立即利用这项技术!