在 CentOS 和 RHEL 8/7 中安装 Docker 并学习基本的容器操作
介绍
Docker 通过提供轻量级且高效的容器化平台彻底改变了软件开发和部署领域。借助 Docker,开发人员可以将应用程序和依赖项打包到容器中,从而更轻松地在不同环境中一致地部署和运行它们。在本文中,我们将指导您完成在 CentOS 和 RHEL 8/7 上安装 Docker 的过程,并提供基本容器操作的示例。
在 CentOS/RHEL 8 上安装 Docker
准备系统
在安装 Docker 之前,请通过运行以下命令确保您的系统是最新的 -
$ sudo yum update
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加 Docker 存储库
要安装 Docker 软件包,您需要将 Docker 存储库添加到您的系统中。执行以下命令 -
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装 Docker 引擎
现在,使用以下命令安装 Docker 引擎 -
$ sudo yum install -y docker-ce docker-ce-cli containerd.io
启动 Docker 服务
启动 Docker 服务并使其在系统启动时启动 -
$ sudo systemctl start docker
$ sudo systemctl enable docker
验证 Docker 安装
通过检查版本确认 Docker 已安装并运行 -
$ docker --version
基本容器操作
运行你的第一个容器
让我们从运行一个简单的容器开始。执行以下命令来运行 Nginx Web 服务器容器 -
$ docker run -d -p 80:80 nginx
列出正在运行的容器
要查看正在运行的容器的列表,请使用以下命令 -
$ docker ps
停止容器
使用容器 ID 或名称停止正在运行的容器 -
$ docker stop <container_id or container_name>
移除容器
要删除已停止的容器,请使用以下命令 -
$ docker rm <container_id or container_name>
拉取 Docker 镜像
您可以使用 docker pull 命令从 Docker Hub 拉取映像。例如,要提取 Ubuntu 20.04 映像,请使用 -
$ docker pull ubuntu:20.04
运行交互式容器
要运行交互式容器并在其中获取 shell 提示符,请使用以下命令 -
$ docker run -it ubuntu:20.04 /bin/bash
将文件复制到容器或从容器复制文件
您可以使用 docker cp 命令在主机系统和容器之间复制文件。例如,要将名为 file.txt 的文件复制到容器中,请执行 -
$ docker cp file.txt <container_id>:<destination_path>
管理容器资源
Docker 提供了限制容器资源(例如 CPU 和内存使用)的选项。例如,要限制容器仅使用 1 个 CPU 核心,请使用 -
$ docker run --cpus=1 <image_name>
在 CentOS/RHEL 7 上安装 Docker
启用 Docker CE 存储库
首先,通过运行以下命令启用 Docker CE 存储库 -
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装 Docker
使用以下命令安装 Docker -
$ sudo yum install -y docker-ce docker-ce-cli containerd.io
启动 Docker 服务
启动 Docker 服务并使其在系统启动时启动 -
$ sudo systemctl start docker
$ sudo systemctl enable docker
验证 Docker 安装
确认 Docker 已安装并正在运行 -
$ docker --version
Docker 示例和输出
构建自定义 Docker 镜像
Docker 允许您通过指定 Dockerfile 创建自己的自定义映像。让我们创建一个简单的 Dockerfile,使用自定义 HTML 文件构建图像 -
创建一个名为 Dockerfile 的文件,其中包含以下内容 -
FROM nginx:latest
COPY index.html /usr/share/nginx/html/
在包含所需内容的同一目录中创建一个 index.html 文件。
使用以下命令构建 Docker 镜像 -
$ docker build -t custom-nginx .
从自定义映像运行容器
现在我们已经构建了自定义 Docker 映像,让我们运行一个基于它的容器 -
$ docker run -d -p 8080:80 custom-nginx
打开浏览器并导航到 http://localhost:8080 来访问容器化 Web 服务器。您应该会看到自定义 HTML 文件的内容。
检查容器详细信息
要查看有关正在运行的容器的详细信息,例如其 IP 地址、网络配置等,请使用以下命令 -
$ docker inspect <container_id or container_name>
容器日志
要检查容器生成的日志,请使用以下命令 -
$ docker logs <container_id or container_name>
管理 Docker 镜像
Docker 允许您有效地管理图像。这里有一些有用的命令 -
列出系统上所有可用的图像 -
$ docker images
删除图像 -
$ docker rmi <image_id or image_name>
将镜像拉取和推送到 Docker Hub -
$ docker pull <image_name>
$ docker push <image_name>
Docker 网络
了解 Docker 网络
Docker 提供了各种网络选项来促进容器和主机系统之间的通信。让我们探讨一些常见的网络概念 -
桥接网络 - Docker 默认创建一个桥接网络,允许容器之间以及使用内部 IP 地址的主机进行通信。
主机网络 - 容器与主机共享网络命名空间,使它们能够直接使用主机的网络接口。
覆盖网络 - 用于在不同 Docker 主机上运行的容器之间进行通信,形成分布式网络。
创建桥接网络
要创建自定义桥接网络,请使用以下命令 -
$ docker network create mynetwork
在自定义网络上运行容器
您可以在运行容器时指定网络以将其连接到特定网络 -
$ docker run -d --network=mynetwork --name container1 nginx
$ docker run -d --network=mynetwork --name container2 nginx
上面的命令创建两个容器(container1和container2)并将它们连接到mynetwork网桥网络。
检查网络详细信息
要查看有关 Docker 网络的信息,例如连接的容器和 IP 地址,请使用以下命令 -
$ docker network inspect mynetwork
将容器连接到多个网络
容器可以连接到多个网络,允许不同网络之间进行通信。使用以下命令将容器连接到附加网络 -
$ docker network connect mynetwork2 <container_id or container_name>
暴露容器端口
要将容器的端口公开给主机系统,请在运行容器时使用 -p 或 --publish 标志 -
$ docker run -d -p 8080:80 nginx
上面的命令将容器的 80 端口公开到主机上的 8080 端口。
连接容器
--link 选项允许容器使用私有 DNS 名称安全地相互通信。例如,要将容器 1 链接到容器 2,请使用以下命令 -
$ docker run -d --link container2 --name container1 nginx
在这种情况下,container1 可以使用 DNS 名称container2 与container2 进行通信。
结论
在本文中,我们介绍了在 CentOS 和 RHEL 8/7 上安装 Docker。我们逐步完成了设置 Docker 的过程,包括存储库配置、包安装和服务管理。此外,我们还探索了基本的容器操作命令,例如运行、停止和删除容器、拉取映像、与容器交互以及管理容器资源。有了这些知识,您现在就可以开始探索容器化的广阔世界,并利用 Docker 来简化您的软件部署流程。