什么是容器?

解释

想象一下,您正在开发一个杀手级 Web 应用程序,它具有三个主要组件:React 前端、Python API 和 PostgreSQL 数据库。如果您想从事这个项目,则必须安装 Node、Python 和 PostgreSQL。

您如何确保您拥有与团队中其他开发人员相同的版本?或者你的 CI/CD 系统?或者生产中使用什么?

如何确保应用程序所需的 Python(或 Node 或数据库)版本不会受到计算机上已有版本的影响?您如何处理潜在的冲突?

输入容器!

什么是容器?简而言之,容器是每个应用程序组件的独立进程。每个组件(前端 React 应用程序、Python API 引擎和数据库)都在自己的隔离环境中运行,与计算机上的其他所有组件完全隔离。

这就是他们的出色之处。容器有:

  • 独立的。每个容器都拥有其运行所需的一切,而不依赖于主机上预安装的任何依赖项。
  • 孤立。由于容器是独立运行的,因此它们对主机和其他容器的影响最小,从而提高了应用程序的安全性。
  • 独立的。每个容器都是独立管理的。删除一个容器不会影响其他任何容器。
  • 便携的。容器可以在任何地方运行!在您的开发计算机上运行的容器将在数据中心或云中的任何地方以相同的方式工作!

容器与虚拟机 (VM)

不用太深入,虚拟机是一个完整的操作系统,拥有自己的内核、硬件驱动程序、程序和应用程序。仅仅为了隔离单个应用程序而启动虚拟机会产生大量开销。

容器只是一个独立的进程,包含它运行所需的所有文件。如果您运行多个容器,它们都共享相同的内核,从而允许您在更少的基础设施上运行更多应用程序。

一起使用虚拟机和容器

很多时候,您会看到容器和虚拟机一起使用。例如,在云环境中,配置的机器通常是虚拟机。然而,具有容器运行时的虚拟机可以运行多个容器化应用程序,而不是配置一台机器来运行一个应用程序,从而提高资源利用率并降低成本。

现在就试试

在本次实践中,您将了解如何使用 Docker 桌面 GUI 运行 Docker 容器。


使用以下说明来运行容器。

  1. 打开 Docker Desktop 并选择顶部导航栏上的“搜索”字段。

  2. welcome-to-docker在搜索输入中指定,然后选择拉动按钮。

    Docker 仪表板的屏幕截图显示了welcome-to-docker Docker 镜像的搜索结果
  3. 成功拉取映像后,选择“运行”按钮。

  4. 展开可选设置

  5. 容器名称中指定welcome-to-docker

  6. 主机端口中,指定8080

    Docker 仪表板的屏幕截图显示了容器运行对话框,其中输入了welcome-to-docker 作为容器名称,并指定了 8080 作为端口号
  7. 选择运行以启动容器。

恭喜!您刚刚运行了您的第一个容器! ????

查看您的容器

您可以通过转到Docker 仪表板的容器视图来查看所有容器。

Docker Desktop GUI 的容器视图的屏幕截图,显示了在主机端口 8080 上运行的欢迎使用 Docker 容器

该容器运行一个显示简单网站的 Web 服务器。当处理更复杂的项目时,您将在不同的容器中运行不同的部分。例如,您可以为前端、后端和数据库运行不同的容器。

访问前端

当您启动容器时,您将容器的端口之一暴露到您的计算机上。将此视为创建配置,让您可以通过容器的隔离环境进行连接。

对于此容器,可以通过端口访问前端8080。要打开该网站,请选择容器 端口列中的链接或在浏览器中访问http://localhost:8080 。

来自正在运行的容器的登陆页面的屏幕截图

探索您的容器

Docker Desktop 可让您探索容器的不同方面并与之交互。自己尝试一下。

  1. 转到Docker 仪表板中的容器视图。

  2. 选择您的容器。

  3. 选择“文件”选项卡以探索容器的独立文件系统。

    Docker 仪表板的屏幕截图,显示正在运行的容器内的文件和目录

停止你的容器

容器docker/welcome-to-docker将继续运行,直到您停止它。

  1. 转到Docker 仪表板中的容器视图。

  2. 找到您想要停止的容器。

  3. “操作”列中选择“停止”操作。

    Docker 仪表板的屏幕截图,其中选择了欢迎容器并准备停止

按照说明使用 CLI 运行容器:

  1. 打开 CLI 终端并使用以下命令启动容器 docker run

    $ docker run -d -p 8080:80 docker/welcome-to-docker
    

    此命令的输出是完整的容器 ID。

恭喜!您刚刚启动了第一个容器! ????

查看正在运行的容器

您可以使用以下命令验证容器是否已启动并正在运行 docker ps

docker ps

您将看到如下输出:

 CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS          PORTS                      NAMES
 a1f7a4bb3a27   docker/welcome-to-docker   "/docker-entrypoint.…"   11 seconds ago   Up 11 seconds   0.0.0.0:8080->80/tcp       gracious_keldysh

该容器运行一个显示简单网站的 Web 服务器。当处理更复杂的项目时,您将在不同的容器中运行不同的部分。例如frontendbackend、 和 的不同容器database

提示

该命令将docker ps显示正在运行的容器。要查看已停止的容器,请添加标志以列出所有容器:-adocker ps -a

访问前端

当您启动容器时,您将容器的端口之一暴露到您的计算机上。将此视为创建配置,让您可以通过容器的隔离环境进行连接。

对于此容器,可以通过端口访问前端8080。要打开该网站,请选择容器 端口列中的链接或在浏览器中访问http://localhost:8080 。

Nginx Web 服务器登陆页面的屏幕截图,来自正在运行的容器

停止你的容器

容器docker/welcome-to-docker将继续运行,直到您停止它。您可以使用该命令停止容器docker stop

  1. 运行docker ps获取容器ID

  2. 向命令提供容器 ID 或名称 docker stop

    docker stop <the-container-id>
    

提示

通过 ID 引用容器时,无需提供完整 ID。您只需提供足够的 ID 即可使其唯一。例如,可以通过运行以下命令来停止先前的容器:

docker stop a1f

其他资源

以下链接提供了有关容器的其他指导:

下一步

现在您已经了解了 Docker 容器的基础知识,是时候了解 Docker 镜像了。