在 CentOS 和 RHEL 8/7 中安装 Docker 并学习基本容器操作 - 第 1 部分
在这个由 4 篇文章组成的系列中,我们将讨论Docker,它是一个在操作系统级别上运行的开源轻量级虚拟化工具,允许用户创建、运行和部署封装到小型容器中的应用程序。
这种类型的 Linux 容器已被证明是快速、可移植且安全的。Docker容器中运行的进程始终与主机隔离,从而防止外部篡改。
本教程提供了有关如何在CentOS/RHEL 8/7上安装 Docker、创建和运行 Docker 容器的起点,但仅仅触及了 Docker 的表面。
步骤 1:安装并配置 Docker
1. Docker的早期版本称为docker或docker-engine,如果您已经安装了这些版本,则必须在安装较新版本的docker-ce之前将其卸载。
# yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
2.要安装最新版本的Docker 引擎,您需要设置 Docker 存储库并安装yum-utils包以在系统上启用 Docker 稳定存储库。
# yum install -y yum-utils # yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
3.现在从 Docker 存储库和containerd手动安装较新的docker-ce版本,因为由于某些问题,Red Hat 阻止了 的安装,它是docker-ce的依赖项。containerd.io > 1.2.0-3.el7
# yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm # yum install docker-ce docker-ce-cli
4.安装 Docker 包后,启动守护进程,检查其状态并使用以下命令在系统范围内启用它:
# systemctl start docker # systemctl status docker # systemctl enable docker
5.最后,通过发出以下命令运行容器测试映像以验证 Docker 是否正常运行:
# docker run hello-world
如果您能看到以下消息,则说明一切正常。
示例输出
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/
6.现在,您可以运行一些基本的 Docker 命令来获取有关 Docker 的一些信息:
有关 Docker 的系统范围信息
# docker info
对于 Docker 版本
# docker version
7.要获取所有可用 Docker 命令的列表,请在控制台上输入 docker。
# docker
第 2 步:下载 Docker 映像
8.为了启动和运行 Docker 容器,首先必须从主机上的Docker Hub下载一个映像。Docker Hub 从其存储库中提供了大量免费映像。
要搜索 Docker 映像(例如 Ubuntu),请发出以下命令:
# docker search ubuntu
9.根据您的需要决定要运行的镜像后,通过运行以下命令将其下载到本地(在本例中下载并使用Ubuntu镜像):
# docker pull ubuntu
10.要列出主机上所有可用的 Docker 映像,请发出以下命令:
# docker images
11.如果您不再需要 Docker 映像并且想要将其从主机中删除,请发出以下命令:
# docker rmi ubuntu
步骤 3:运行 Docker 容器
当您针对某个镜像执行命令时,您基本上会获得一个容器。在容器中执行的命令结束后,容器将停止(您将获得一个未运行或已退出的容器)。如果您再次在同一镜像中运行另一个命令,则会创建一个新容器,依此类推。
所有创建的容器都将保留在主机文件系统上,直到您选择使用命令删除它们docker rm
。
12.为了创建和运行容器,您需要在下载的映像(在本例中为Ubuntu)中运行命令,因此一个基本命令是使用cat 命令显示容器内的分发版本文件,如下例所示:
# docker run ubuntu cat /etc/issue
上述命令划分如下:
# docker run [local image] [command to run into container]
13.要使用创建容器时执行的命令再次运行其中一个容器,首先,您必须通过发出以下命令来获取容器ID(或 Docker 自动生成的名称),该命令显示正在运行和已停止(未运行)容器的列表:
# docker ps -l
14.获取容器ID后,您可以使用创建容器时使用的命令重新启动容器,方法是发出以下命令:
# docker start 923a720da57f
此处,字符串923a720da57f
代表容器ID。
15.如果容器处于运行状态,您可以通过发出命令获取其IDdocker ps
。要停止正在运行的容器,请docker stop
通过指定容器ID或自动生成的名称发出命令。
# docker stop 923a720da57f OR # docker stop cool_lalande # docker ps
16.一个更优雅的替代方法是使用命令行上的选项为您创建的每个容器分配一个唯一的名称,这样您就不必记住容器ID--name
,如下例所示:
# docker run --name ubuntu20.04 ubuntu cat /etc/issue
17.然后,使用您为容器分配的名称,您可以通过访问其名称来进一步操作容器(start、stop、remove、top、stats),如下例所示:
# docker start ubuntu20.04 # docker stats ubuntu20.04 # docker top ubuntu20.04
请注意,如果用于创建容器的命令进程完成,上述某些命令可能不会显示任何输出。当容器内运行的进程完成时,容器将停止。
步骤 4:在容器中运行交互式会话
18.为了以交互方式连接到容器 shell 会话并像在任何其他 Linux 会话上一样运行命令,请发出以下命令:
# docker run -it ubuntu bash
上述命令划分如下:
-i
用于启动交互式会话。-t
分配一个 TTY 并连接 stdin 和 stdout。ubuntu
是我们用来创建容器的图像。bash
(或/bin/bash)是我们在 Ubuntu 容器内运行的命令。
19.要退出正在运行的容器会话并返回主机,您必须键入exit
命令。exit命令终止所有容器进程并将其停止。
# exit
20.如果您以交互方式登录容器终端提示符,并且需要保持容器处于运行状态但退出交互式会话,您可以按和键退出控制台并返回主机终端。Ctrl+p
Ctrl+q
21.要重新连接到正在运行的容器,您需要容器ID或名称。发出docker ps
命令以获取ID或名称,然后docker attach
通过指定容器ID或名称来运行命令,如上图所示:
# docker attach <container id>
22.要从主机会话停止正在运行的容器,请发出以下命令:
# docker kill <container id>
这就是基本的容器操作。在下一个教程中,我们将讨论如何将 Web 服务器保存、删除和运行到 Docker 容器中。