如何在 CentOS 7 上安装和使用 Docker

2023-11-06

介绍

Docker 是一个应用程序,可以让在容器中运行应用程序进程变得简单、容易,就像虚拟机一样,只是更便携、更资源友好、更依赖于主机操作系统。有关 Docker 容器的不同组件的详细介绍,请查看Docker 生态系统:常用组件简介.

在 CentOS 7 上安装 Docker 有两种方法。一种方法是将其安装在操作系统的现有安装上。另一个涉及使用名为的工具启动服务器码头工人机器会自动在其上安装 Docker。

在本教程中,您将学习如何在现有的 CentOS 7 安装上安装和使用它。

先决条件

  • 64 位 CentOS 7 Droplet
  • 具有 sudo 权限的非 root 用户。使用 CentOS 7 设置服务器CentOS 7 初始设置指南解释了如何设置。

Note:Docker 需要 64 位版本的 CentOS 7 以及等于或高于 3.10 的内核版本。默认的 64 位 CentOS 7 Droplet 满足这些要求。

本教程中的所有命令都应以非 root 用户身份运行。如果该命令需要 root 访问权限,则前面将显示sudo. CentOS 7 初始设置指南解释如何添加用户并授予他们 sudo 访问权限。

第 1 步 — 安装 Docker

CentOS 7 官方存储库中提供的 Docker 安装包可能不是最新版本。要获取最新最好的版本,请从官方 Docker 存储库安装 Docker。本节将向您展示如何做到这一点。

但首先,让我们更新包数据库:

  1. sudoyum 检查更新

现在运行这个命令。它将添加官方 Docker 存储库,下载最新版本的 Docker,并安装它:

  1. curl -fsSLhttps://get.docker.com/| sh

安装完成后,启动Docker守护进程:

  1. sudo系统控制启动docker

验证它是否正在运行:

  1. sudo系统控制状态docker

输出应类似于以下内容,表明服务处于活动状态并正在运行:

Output
● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2016-05-01 06:53:52 CDT; 1 weeks 3 days ago Docs: https://docs.docker.com Main PID: 749 (docker)

最后,确保它在每次服务器重新启动时启动:

  1. sudo系统控制enable docker

现在安装 Docker 不仅为您提供 Docker 服务(守护进程),还为您提供docker命令行实用程序或 Docker 客户端。我们将探讨如何使用docker本教程后面的命令。

步骤 2 — 不使用 Sudo 执行 Docker 命令(可选)

默认情况下,运行docker命令需要root权限——也就是说,你必须在命令前面加上前缀sudo。它也可以由用户运行docker组,该组是在安装 Docker 时自动创建的。如果您尝试运行docker命令不带前缀sudo或者如果不在 docker 组中,您将得到如下输出:

Output
docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run --help'.

如果你想避免打字sudo每当你运行docker命令,将您的用户名添加到 docker 组:

  1. sudo usermod -aG docker $(whoami)

您需要注销 Droplet 并以同一用户身份重新登录才能启用此更改。

如果您需要添加用户docker您未登录的组,请使用以下方式显式声明该用户名:

  1. sudo usermod -aG docker username

本文的其余部分假设您正在运行docker以 docker 用户组中的用户身份执行命令。如果您选择不这样做,请在命令前面加上sudo.

第 3 步 — 使用 Docker 命令

Docker 安装并运行后,现在是时候熟悉命令行实用程序了。使用docker包括向其传递一系列选项和子命令,后跟参数。语法采用以下形式:

  1. docker [option] [command] [论点]

要查看所有可用的子命令,请键入:

  1. docker

从 Docker 1.11.1 开始,可用子命令的完整列表包括:

Output
attach Attach to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders between a container and the local filesystem create Create a new container diff Inspect changes on a container's filesystem events Get real time events from the server exec Run a command in a running container export Export a container's filesystem as a tar archive history Show the history of an image images List images import Import the contents from a tarball to create a filesystem image info Display system-wide information inspect Return low-level information on a container or image kill Kill a running container load Load an image from a tar archive or STDIN login Log in to a Docker registry logout Log out from a Docker registry logs Fetch the logs of a container network Manage Docker networks pause Pause all processes within a container port List port mappings or a specific mapping for the CONTAINER ps List containers pull Pull an image or a repository from a registry push Push an image or a repository to a registry rename Rename a container restart Restart a container rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save one or more images to a tar archive search Search the Docker Hub for images start Start one or more stopped containers stats Display a live stream of container(s) resource usage statistics stop Stop a running container tag Tag an image into a repository top Display the running processes of a container unpause Unpause all processes within a container update Update configuration of one or more containers version Show the Docker version information volume Manage Docker volumes wait Block until a container stops, then print its exit code

要查看特定命令可用的开关,请键入:

  1. docker docker-subcommand --help

要查看系统范围的信息,请使用:

  1. docker info

第 4 步 — 使用 Docker 镜像

Docker 容器是从 Docker 镜像运行的。默认情况下,它从 Docker Hub 中提取这些镜像,Docker Hub 是由 Docker 项目背后的公司 Docker 管理的 Docker 注册表。任何人都可以在 Docker Hub 上构建和托管其 Docker 映像,因此运行 Docker 容器所需的大多数应用程序和 Linux 发行版都具有托管在 Docker Hub 上的映像。

要检查是否可以从 Docker Hub 访问和下载映像,请键入:

  1. docker运行你好世界

输出应包含以下内容,表明 Docker 工作正常:

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

您可以使用以下命令搜索 Docker Hub 上可用的镜像docker命令与search子命令。例如,要搜索 CentOS 映像,请键入:

  1. docker搜索 Centos

该脚本将抓取 Docker Hub 并返回名称与搜索字符串匹配的所有图像的列表。在这种情况下,输出将类似于以下内容:

Output
NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official build of CentOS. 2224 [OK] jdeathe/centos-ssh CentOS-6 6.7 x86_64 / CentOS-7 7.2.1511 x8... 22 [OK] jdeathe/centos-ssh-apache-php CentOS-6 6.7 x86_64 / Apache / PHP / PHP M... 17 [OK] million12/centos-supervisor Base CentOS-7 with supervisord launcher, h... 11 [OK] nimmis/java-centos This is docker images of CentOS 7 with dif... 10 [OK] torusware/speedus-centos Always updated official CentOS docker imag... 8 [OK] nickistre/centos-lamp LAMP on centos setup 3 [OK] ...

In the OFFICIAL柱子,OK表示由项目背后的公司构建和支持的图像。确定要使用的图像后,您可以使用以下命令将其下载到您的计算机上pull子命令,如下所示:

  1. docker拉centos

下载镜像后,您可以使用下载的镜像运行一个容器run子命令。如果图像尚未下载docker执行的是run子命令中,Docker 客户端将首先下载镜像,然后使用它运行容器:

  1. docker运行centos

要查看已下载到您的计算机的图像,请键入:

  1. docker images

输出应类似于以下内容:

[secondary_lable Output]
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              778a53015523        5 weeks ago         196.7 MB
hello-world         latest              94df4f0ce8a4        2 weeks ago         967 B

正如您将在本教程后面看到的,可以修改用于运行容器的图像并用于生成新图像,然后可以上传这些图像(pushed是技术术语)到 Docker Hub 或其他 Docker 注册表。

第 5 步 — 运行 Docker 容器

The hello-world您在上一步中运行的容器是在发出测试消息后运行并退出的容器的示例。然而,容器的用途远不止于此,而且它们可以是交互式的。毕竟,它们类似于虚拟机,只是更加资源友好。

作为示例,让我们使用最新的 CentOS 映像运行一个容器。的组合-i and -t开关使您可以交互式 shell 访问容器:

  1. docker run -it centos

您的命令提示符应更改以反映您现在正在容器内工作的事实,并且应采用以下形式:

Output
[root@59839a1b7de2 /]#

重要的:记下命令提示符中的容器 ID。在上面的例子中,它是59839a1b7de2.

现在您可以在容器内运行任何命令。例如,让我们在正在运行的容器中安装 MariaDB 服务器。无需在任何命令前添加前缀sudo,因为您正在使用 root 权限在容器内进行操作:

  1. yum installmariadb 服务器

第 6 步 — 将容器中的更改提交到 Docker 映像

当您启动 Docker 映像时,您可以像使用虚拟机一样创建、修改和删除文件。您所做的更改将仅应用于该容器。你可以启动和停止它,但是一旦你用docker rm命令,更改将永久丢失。

本节向您展示如何将容器的状态保存为新的 Docker 映像。

在 CentOS 容器内安装 MariaDB 服务器后,您现在拥有一个运行映像的容器,但该容器与您用于创建它的映像不同。

要将容器的状态保存为新映像,请首先退出容器:

  1. exit

然后使用以下命令将更改提交到新的 Docker 映像实例。这-mswitch 用于提交消息,帮助您和其他人了解您所做的更改,而-a用于指定作者。容器 ID 是您在本教程前面启动交互式 docker 会话时记下的 ID。除非您在 Docker Hub 上创建了其他存储库,否则存储库通常是您的 Docker Hub 用户名:

  1. docker commit -m "What did you do to the image" -a "Author Name" container-id repository/new_image_name

例如:

  1. docker commit -m “添加了 mariadb 服务器” -a “周日奥格乌-奇努瓦”59839a1b7de2 finid/centos-mariadb

Note:当你commit图像,新图像保存在本地,即您的计算机上。在本教程的后面部分,您将学习如何将映像推送到 Docker 注册表(例如 Docker Hub),以便您和其他人可以对其进行评估和使用。

该操作完成后,列出计算机上现在的 Docker 镜像应该会显示新镜像以及它所源自的旧镜像:

  1. docker images

输出应该是这样的:

Output
REPOSITORY TAG IMAGE ID CREATED SIZE finid/centos-mariadb latest 23390430ec73 6 seconds ago 424.6 MB centos latest 778a53015523 5 weeks ago 196.7 MB hello-world latest 94df4f0ce8a4 2 weeks ago 967 B

在上面的例子中,centos-mariadb是新映像,它源自 Docker Hub 中的现有 CentOS 映像。大小差异反映了所做的更改。在这个例子中,变化是安装了 MariaDB 服务器。因此,下次您需要使用预装了 MariaDB 服务器的 CentOS 来运行容器时,您只需使用新镜像即可。图像也可以从所谓的 Dockerfile 构建。但这是一个非常复杂的过程,远远超出了本文的范围。我们将在以后的文章中对此进行探讨。

第 7 步 — 列出 Docker 容器

使用 Docker 一段时间后,您的计算机上将有许多活动(正在运行)和非活动容器。要查看活动的,请使用:

  1. docker ps

您将看到类似于以下内容的输出:

Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f7c79cc556dd centos "/bin/bash" 3 hours ago Up 3 hours silly_spence

要查看所有容器 - 活动的和非活动的,请将其传递给-a switch:

  1. docker ps -a

要查看您创建的最新容器,请将其传递给-l switch:

  1. docker ps -l

停止正在运行或活动的容器就像键入以下内容一样简单:

  1. docker stop container-id

The container-id can be found in the output from the docker ps command.

第 8 步 — 将 Docker 镜像推送到 Docker 存储库

从现有映像创建新映像后,下一个合乎逻辑的步骤是与选定的几个朋友、Docker Hub 上的整个世界或您有权访问的其他 Docker 注册表共享它。要将映像推送到 Docker Hub 或任何其他 Docker 注册表,您必须在那里有一个帐户。

本节向您展示如何将 Docker 镜像推送到 Docker Hub。

要在 Docker Hub 上创建帐户,请在以下位置注册:码头工人中心。之后,要推送您的映像,请首先登录 Docker Hub。系统会提示您进行身份验证:

  1. docker login -u docker-registry-username

如果您指定了正确的密码,身份验证应该会成功。然后你可以使用以下方式推送你自己的图像:

  1. docker push docker-registry-username/docker-image-name

这需要一些时间才能完成,完成后,输出将是这样的:

Output
The push refers to a repository [docker.io/finid/centos-mariadb] 670194edfaf5: Pushed 5f70bf18a086: Mounted from library/centos 6a6c96337be1: Mounted from library/centos ...

将图像推送到注册表后,它应该列在您帐户的仪表板上,如下图所示。

Docker image listing on Docker Hub

如果推送尝试导致此类错误,则您可能没有登录:

Output
The push refers to a repository [docker.io/finid/centos-mariadb] e3fbbfb44187: Preparing 5f70bf18a086: Preparing a3b5c80a4eba: Preparing 7f18b442972b: Preparing 3ce512daaf78: Preparing 7aae4540b42d: Waiting unauthorized: authentication required

登录,然后重复推送尝试。

结论

Docker 的功能比本文中给出的要多得多,但这应该足以让您开始在 CentOS 7 上使用它。与大多数开源项目一样,Docker 是从快速开发的代码库构建的,因此请制作一个访问项目的习惯博客页面了解最新信息。

另请查看其他 Docker 教程在 DO 社区中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 CentOS 7 上安装和使用 Docker 的相关文章

随机推荐

  • Bash 数组

    数组是最常用和基本的数据结构之一 您可以将数组视为一个变量 其中可以存储多个变量 在本文中 我们将介绍 Bash 数组 并解释如何在 Bash 脚本中使用它们 Bash 数组 Bash 支持一维数字索引和关联数组类型 数值数组使用整数引用
  • 如何在 Debian 10 上设置 Apache 虚拟主机

    Apache 虚拟主机允许您在一台计算机上运行多个网站 使用虚拟主机 您可以指定站点文档根 包含网站文件的目录 为每个站点创建单独的安全策略 使用不同的 SSL 证书等等 本文介绍如何在 Debian 10 服务器上设置 Apache 虚拟
  • 配置 Apache 错误和访问日志

    Apache 是一个开源 跨平台的 HTTP 服务器 它具有许多强大的功能 可以通过各种模块进行扩展 管理时Apache对于 Web 服务器 您将执行的最常见的任务之一是检查日志文件 了解如何配置和读取日志在排除服务器或应用程序问题时非常有
  • 如何在 Ubuntu 20.04 上设置 SSH 密钥

    Secure Shell SSH 是一种用于在客户端和服务器之间创建安全连接的网络协议 通过 SSH 您可以在远程计算机上运行命令 创建隧道 转发端口等 SSH 支持多种身份验证机制 最常见的两种是基于密码和公钥的身份验证 使用公钥进行认证
  • 巴什赫里多克

    在编写 shell 脚本时 您可能会遇到需要将多行文本或代码块传递给交互式命令的情况 例如tee cat or sftp 在 Bash 和 Zsh 等其他 shell 中 Here 文档 Heredoc 是一种重定向类型 允许您将多行输入传
  • 如何在 Ubuntu 18.04 上安装 Xrdp 服务器(远程桌面)

    Xrdp 是 Microsoft 远程桌面协议 RDP 的开源实现 允许您以图形方式控制远程系统 使用 RDP 您可以登录到远程计算机并创建真实的桌面会话 就像登录到本地计算机一样 本教程介绍如何在 Ubuntu 18 04 上安装和配置
  • 如何在 CentOS 7 上安装和配置 GitLab

    GitLab 是一个基于网络的开源Git存储库管理器编写为Ruby包括 wiki 问题管理 代码审查 监控以及持续集成和部署 它使开发人员能够构建 部署和运行他们的应用程序 GitLab 提供三种不同版本 社区版 CE 企业版 EE 和 G
  • 如何在 Linux 中获取目录的大小

    使用列出目录内容时ls命令 您可能已经注意到目录的大小几乎总是 4096 字节 4 KB 这是磁盘上用于存储目录元信息的空间大小 而不是它包含的内容 您要用来获取目录的实际大小的命令是du 它是 磁盘使用情况 的缩写 获取目录的大小 The
  • Linux 中的 awk 命令及示例

    Awk 是一种通用脚本语言 专为高级文本处理而设计 它主要用作报告和分析工具 与大多数其他过程性编程语言不同 awk 是数据驱动的 这意味着您定义一组要针对输入文本执行的操作 它获取输入数据 对其进行转换 并将结果发送到标准输出 本文涵盖了
  • 如何在 Debian 9 上安装 Minecraft 服务器

    我的世界 是有史以来最受欢迎的游戏之一 这是一款关于建造各种结构并进行冒险的沙盒视频游戏 本教程介绍了如何在 Debian 9 上安装和配置 Minecraft 服务器 我们将使用 Systemd 来运行 Minecraft 服务器和mcr
  • 如何在 Ubuntu 18.04 上安装 Opera Web 浏览器

    Opera是世界上最流行的跨平台网络浏览器之一 它是专为现代网络构建的快速 易于使用且安全的浏览器 Opera 基于与Chrome并提供类似的浏览体验 并允许您从 Google 官方网上应用店安装 Chrome 扩展程序 它具有内置功能 例
  • 如何在 Vim / Vi 中显示行号

    Vim Vi 是许多软件开发人员和 L inux 系统管理员首选的文本编辑器 默认情况下 Vim 不显示行号 但可以轻松打开它们 Vim 支持三种行号模式 可帮助您浏览文件 除了标准的绝对行编号之外 Vim 还支持相对和混合行编号模式 本文
  • 如何在 CentOS 7 上安装 Webmin

    Webmin是一个用于 Linux UNIX 系统管理的开源 Web 控制面板 Webmin 允许您管理用户 组 磁盘配额以及配置最流行的服务 包括 Web FTP 电子邮件和数据库服务器 本教程介绍如何在 CentOS 7 服务器上安装
  • 如何在 Linux 中更改 SSH 端口

    默认情况下 SSH 侦听端口 22 更改默认 SSH 端口可以降低自动攻击的风险 从而为您的服务器增加了额外的安全层 本教程介绍如何更改 Linux 中的默认 SSH 端口 我们还将向您展示如何配置防火墙以允许访问新的 SSH 端口 保护服
  • 如何使用 SOCKS 隧道在没有 VPN 的情况下安全地路由 Web 流量

    作者选择了COVID 19 救济基金接受捐赠作为为捐款而写程序 介绍 在某些时候 您可能会发现自己所在的网络不安全或防火墙限制过于严格 并且您需要确保没有人在监视您的流量 一种解决方案是使用 VPN 但许多 VPN 需要在您的计算机上安装特
  • Java 集合 sort()

    今天我们将研究Java集合的排序方法 在与java中的集合 我们经常需要对数据进行排序 Java 集合 sort Java Collections类为我们提供了非常方便的方法Collections sort 对所有进行排序List实施例如链
  • 提高 React 应用程序性能的 5 个技巧

    您的 React 应用程序是否感觉有点迟缓 您是否因为可能看到的内容而害怕打开 Chrome DevTools 中的 paint flash 试试这 5 个性能技巧 本文包含 React 开发的 5 个性能技巧 您可以使用此目录快速浏览本文
  • 如何在 Linux 上读取和设置环境变量和 Shell 变量

    介绍 当通过 shell 会话与服务器交互时 shell 会编译许多信息来确定其行为和对资源的访问 其中一些设置包含在配置设置中 而其他设置则由用户输入确定 shell 跟踪所有这些设置和详细信息的一种方法是通过它维护的一个称为环境 环境是
  • Python 当前日期时间

    我们可以使用Python datetime模块来获取本地系统的当前日期和时间 from datetime import datetime Current date time in local system print datetime no
  • 如何在 CentOS 7 上安装和使用 Docker

    介绍 Docker 是一个应用程序 可以让在容器中运行应用程序进程变得简单 容易 就像虚拟机一样 只是更便携 更资源友好 更依赖于主机操作系统 有关 Docker 容器的不同组件的详细介绍 请查看Docker 生态系统 常用组件简介 在 C