在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 Engine
现在,使用以下命令安装 Docker Engine:
$ 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
通过打开浏览器并导航到 https://127.0.0.1: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 名称安全地相互通信。例如,要将 container1 链接到 container2,请使用以下命令:
$ docker run -d --link container2 --name container1 nginx
在这种情况下,container1 可以使用 DNS 名称 container2 与 container2 通信。
结论
在本文中,我们介绍了在 CentOS 和 RHEL 8/7 上安装 Docker 的方法。我们逐步介绍了设置 Docker 的过程,包括仓库配置、包安装和服务管理。此外,我们还探讨了基本的容器操作命令,例如运行、停止和删除容器、拉取镜像、与容器交互以及管理容器资源。有了这些知识,您现在可以开始探索广阔的容器化世界,并利用 Docker 简化您的软件部署流程。