在CentOS 7上安装和使用Docker的方法

简介: 在CentOS 7上安装和使用Docker的方法

简介

Docker 是一个应用程序,它简化了在容器中运行应用程序进程的过程。这些容器类似于虚拟机,但更加便携、资源友好,并且更依赖于主机操作系统。如果你想详细了解 Docker 容器的不同组件,请查看《Docker 生态系统:常见组件介绍》。

在 CentOS 7 上安装 Docker 有两种方法。一种方法是在现有的操作系统安装 Docker,另一种方法是使用一个名为 Docker Machine 的工具在服务器上安装 Docker。

在本教程中,你将学习如何在现有的 CentOS 7 安装上安装并使用 Docker。

先决条件

  • 64 位 CentOS 7 Droplet
  • 具有 sudo 权限的非 root 用户。《CentOS 7 初始设置指南》介绍了如何设置这一点。

本教程中的所有命令都应该以非 root 用户身份运行。如果命令需要 root 访问权限,将在命令之前加上 sudo。《CentOS 7 初始设置指南》介绍了如何添加用户并赋予他们 sudo 权限。

步骤 1 — 安装 Docker

官方 CentOS 7 仓库中提供的 Docker 安装包可能不是最新版本。为了获取最新版本,可以从官方 Docker 仓库安装 Docker。本节将向你展示如何做到这一点。

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

sudo yum check-update

现在运行以下命令。它将添加官方 Docker 仓库,下载最新版本的 Docker 并进行安装:

curl -fsSL https://get.docker.com/ | sh

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

sudo systemctl start docker

验证它是否正在运行:

sudo systemctl status docker

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

● 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)

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

sudo systemctl enable docker

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

步骤 2 — 无需使用 sudo 执行 Docker 命令(可选)

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

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

如果你想在运行 docker 命令时避免输入 sudo,可以将你的用户名添加到 docker 组中:

sudo usermod -aG docker $(whoami)

你需要注销 Droplet 并以相同用户身份重新登录以启用此更改。

如果你需要将一个不是当前登录用户的用户添加到 docker 组中,可以显式声明该用户名:

sudo usermod -aG docker username

本文的其余部分假设你将作为 docker 用户组中的用户运行 docker 命令。如果你选择不这样做,请在命令前加上 sudo

步骤 3 — 使用 Docker 命令

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

docker [option] [command] [arguments]

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

docker

截至 Docker 1.11.1,可用的完整子命令列表包括:

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

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

docker docker-subcommand --help

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

docker info

步骤 4 —— 使用 Docker 镜像

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

要检查是否可以访问并从 Docker Hub 下载镜像,请输入以下命令:

docker run hello-world

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

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

您可以使用 docker 命令和 search 子命令在 Docker Hub 上搜索可用的镜像。例如,要搜索 CentOS 镜像,请输入:

docker search centos

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

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]
...

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

docker pull centos

下载镜像后,您可以使用 run 子命令使用已下载的镜像运行容器。如果在使用 run 子命令时尚未下载镜像,则 Docker 客户端将首先下载镜像,然后使用它运行容器:

docker run centos

要查看已下载到计算机上的镜像,请输入:

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

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

步骤 5 —— 运行 Docker 容器

您在上一步中运行的 hello-world 容器是一个运行并退出的容器的示例,它发出一个测试消息后退出。然而,容器可以比那更有用,它们可以是交互式的。毕竟,它们类似于虚拟机,只是更节约资源。

例如,让我们使用最新的 CentOS 镜像运行一个容器。-i-t 开关的组合为您提供了对容器的交互式 shell 访问:

docker run -it centos

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

[root@59839a1b7de2 /]#

重要提示: 注意命令提示符中的容器 ID。在上面的示例中,它是 59839a1b7de2

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

yum install mariadb-server

步骤 6 —— 将容器中的更改提交为 Docker 镜像

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

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

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

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

exit

然后使用以下命令将更改提交为新的 Docker 镜像实例。-m 开关用于提交消息,帮助您和其他人知道您所做的更改,而 -a 用于指定作者。容器 ID 是您在本教程开始交互式 Docker 会话时记下的 ID。除非您在 Docker Hub 上创建了其他存储库,否则存储库通常是您的 Docker Hub 用户名:

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

例如:

docker commit -m "added mariadb-server" -a "Sunday Ogwu-Chinuwa" 59839a1b7de2 finid/centos-mariadb

完成该操作后,列出您计算机上的 Docker 镜像应显示新镜像,以及它派生自的旧镜像:

docker images

输出应该类似于:

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 一段时间后,你的计算机上会有许多活跃(正在运行)和非活跃容器。要查看活跃容器,使用以下命令:

docker ps

你将看到类似以下的输出:

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

要查看所有容器(包括活跃和非活跃的),使用 -a 开关:

docker ps -a

要查看你创建的最新容器,使用 -l 开关:

docker ps -l

停止运行中的容器很简单,只需输入:

docker stop 容器ID

容器ID 可以在 docker ps 命令的输出中找到。

步骤 8 — 将 Docker 镜像推送到 Docker 仓库

在从现有镜像创建新镜像之后的下一个逻辑步骤是与你的一些朋友、Docker Hub 上的整个世界或其他你可以访问的 Docker 注册表共享它。要将镜像推送到 Docker Hub 或任何其他 Docker 注册表,你必须在那里拥有一个帐户。

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

要在 Docker Hub 上创建一个帐户,请在 Docker Hub 上注册。然后,要推送你的镜像,首先登录到 Docker Hub。系统会提示你进行身份验证:

docker login -u docker-registry-username

如果输入了正确的密码,身份验证应该会成功。然后你可以使用以下命令推送你自己的镜像:

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

这将需要一些时间来完成,完成后,输出将类似于:

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

如果推送尝试导致以下错误,则你可能没有登录:

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 是基于一个快速发展的代码库构建的,所以要养成访问项目博客页面获取最新信息的习惯。

还要查看 DO 社区中的其他 Docker 教程。


目录
相关文章
|
7天前
|
Linux 虚拟化 Windows
VMware隐藏黑科技!CentOS安装这个神器效率翻倍 文件互传竟比U盘还快?
### 安装VMtools的作用及步骤 安装VMtools可以实现Windows与CentOS之间的字符串和命令粘贴、文件夹共享等操作。在CentOS中,通过VMware菜单栏选择“VMware Tools”,将下载的压缩包拷贝到`/opt`目录并解压。接着进入终端,使用`./vmware-install.pl`命令完成安装。安装后重启系统,即可实现Windows与CentOS之间的字符和文件共享。具体步骤包括解压文件、启动命令行终端、安装VMtools以及配置文件共享。
40 16
VMware隐藏黑科技!CentOS安装这个神器效率翻倍 文件互传竟比U盘还快?
|
7天前
|
存储 IDE Linux
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
本文详细介绍了在VMware虚拟机中安装CentOS 6.8的全过程。首先,需确保已安装VMware并开启V-CPU虚拟化功能,可通过BIOS设置或使用LeoMoon CPU-V工具检测。接着,下载CentOS镜像文件,并在VMware中新建虚拟机,配置CPU、内存、硬盘等参数。最后,加载ISO镜像启动虚拟机,按照提示完成CentOS的安装,包括语言、键盘、存储方式、地区、密码设置及硬盘分区等步骤。安装完成后,以root用户登录即可进入系统桌面,开始学习Linux命令和操作。
52 12
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
|
24天前
|
安全 Linux
CentOS下载ISO镜像的方法
访问CentOS官方网站(https://www.centos.org/download/),在“Downloads”页面找到ISO镜像下载链接,选择所需版本和架构(如x86_64)开始下载。CentOS分为Linux版和Stream版,前者每两年发行一次并提供10年安全维护,后者为滚动更新。旧版本可在Vault(https://vault.centos.org/)下载。建议选择DVD格式镜像,包含完整系统和常用软件。
801 14
CentOS下载ISO镜像的方法
|
11天前
|
缓存 Ubuntu Linux
Docker Buildx 简介与安装指南
Docker Buildx 是一个强大的工具,提供了多架构构建、并行构建和高级缓存管理等功能。通过正确安装和配置 Buildx,可以显著提升 Docker 镜像的构建效率和灵活性。希望本文能帮助你更好地理解和使用 Docker Buildx,以提高开发和部署的效率。
127 16
|
9天前
|
存储 虚拟化 Docker
Docker Desktop 4.38 安装与配置全流程指南(Windows平台)
Docker Desktop 是容器化应用开发与部署的一体化工具,支持本地创建、管理和运行 Docker 容器。4.38 版本新增 GPU 加速、WSL 2 性能优化和 Kubernetes 1.28 集群管理功能,适用于微服务开发和 CI/CD 流水线搭建。安装要求为 Windows 10 2004 及以上(64 位),需启用 Hyper-V 或 WSL 2。硬件最低配置为 4GB 内存、20GB 存储和虚拟化技术支持的 CPU。安装步骤包括启用系统功能、下载并运行安装程序,完成后配置镜像加速并验证功能。常见问题涵盖 WSL 2 安装不完整、磁盘空间清理及容器外网访问等。
805 12
|
20天前
|
缓存 Ubuntu Linux
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
111 25
|
9天前
|
弹性计算 运维 Ubuntu
在阿里云ECS云服务器上安装、配置及高效使用Docker与Docker Compose
本文介绍了在阿里云ECS上使用Ubuntu系统安装和配置Docker及Docker Compose的详细步骤。通过这些工具,可以快速部署、弹性扩展和高效管理容器化应用,满足开发和运维需求。内容涵盖Docker的安装、镜像源配置、创建Web程序镜像以及使用Docker Compose部署WordPress等实际操作,并分享了使用体验,展示了阿里云实例的高性能和稳定性。
158 4
|
1月前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
81 20
|
2天前
|
Ubuntu Linux Docker
如何在Ubuntu 20.04系统中安装Docker
安装 Docker 引擎的步骤如下:首先更新系统包索引 (`sudo apt update`),安装必要依赖包 (`apt-transport-https` 等),添加 Docker 官方 GPG 密钥及 APT 仓库。接着再次更新包索引并安装 Docker 引擎及相关工具 (`docker-ce` 等)。最后启动 Docker 服务并设置开机自启,通过 `docker --version` 和运行测试容器 (`sudo docker run hello-world`) 验证安装是否成功。
29 0
|
1月前
|
消息中间件 Kafka Docker
docker compose 安装 kafka
通过本文的步骤,您可以快速在本地使用 Docker Compose 安装并配置 Kafka 和 Zookeeper。Docker Compose 简化了多容器应用的管理,方便快速搭建和测试分布式系统。
97 2